python爬虫爬取某站上海租房图片


Posted in Python onFebruary 04, 2018

对于一个net开发这爬虫真真的以前没有写过。这段时间开始学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup。python 版本:python3.6 ,IDE :pycharm。其实就几行代码,但希望没有开发基础的人也能一下子看明白,所以大神请绕行。

第三方库首先安装

我是用的pycharm所以另为的脚本安装我这就不介绍了。

python爬虫爬取某站上海租房图片

如上图打开默认设置选择Project Interprecter,双击pip或者点击加号,搜索要安装的第三方库。其中如果建立的项目多记得Project Interprecter要选择正确的安装位置不然无法导入。

Requests库

requests库的官方定义:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。其实他就是请求网络获取网页数据的。

import requests
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
res=requests.get('http://sh.58.com/zufang/',headers=header)
try:
  print(res.text);
except ConnectionError:
  print('访问被拒绝!!!')

结果如下:

python爬虫爬取某站上海租房图片

其中Request Headers的参数如下:

python爬虫爬取某站上海租房图片

#headers的一些属性:
#Accept:指定客户端能够接收的内容类型,内容类型的先后次序表示客户都接收的先后次序
#Accept-Lanuage:指定HTTP客户端浏览器用来展示返回信息优先选择的语言
#Accept-Encoding指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。
#Accept-Charset:HTTP客户端浏览器可以接受的字符编码集
# User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
# Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
# application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
# application/json : 在 JSON RPC 调用时使用
# application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
# 在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

BeautifulSoup库

BeautifulSoup可以轻松的解析Requests库请求的页面,并把页面源代码解析为Soup文档,一边过滤提取数据。这是bs4.2的文档。

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,其中lxml 据说是相对而言比较强大的我下面的暗示是python 标准库的。

python爬虫爬取某站上海租房图片

选择器select

# 选择所有div标签
soup.select("div")
# 选择所有p标签中的第三个标签
soup.select("p:nth-of-type(3)")
相当于soup.select(p)[2]
# 选择div标签下的所有img标签
soup.select("div img")
# 选择div标签下的直接a子标签
soup.select("div > a")
# 选择id=link1后的所有兄弟节点标签
soup.select("#link1 ~ .mybro")
# 选择id=link1后的下一个兄弟节点标签
soup.select("#link1 + .mybro")
# 选择a标签,其类属性为className的标签
soup.select("a .className")
# 选择a标签,其id属性为idName的标签
soup.select("a #idName")
# 选择a标签,其属性中存在attrName的所有标签
soup.select("a[attrName]")
# 选择a标签,其属性href=http://wangyanling.com的所有标签
soup.select("a[href='http://wangyanling.com']")
# 选择a标签,其href属性以http开头
soup.select('a[href^="http"]')
# 选择a标签,其href属性以lacie结尾
soup.select('a[href$="lacie"]')
# 选择a标签,其href属性包含.com
soup.select('a[href*=".com"]')
# 从html中排除某标签,此时soup中不再有script标签
[s.extract() for s in soup('script')]
# 如果想排除多个呢
[s.extract() for s in soup(['script','fram']

BeautifulSoup库需要学习的知识点,请参考bs4.2的文档。在这不再过多叙述。

import requests
from bs4 import BeautifulSoup
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
res=requests.get('http://cd.58.com/zufang/',headers=header)
soup=BeautifulSoup(res.text,'html.parser')
print(soup.prettify())

案例:爬取上海租房图片

import requests
import urllib.request
import os
import time
from bs4 import BeautifulSoup
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'}
url=['http://sh.58.com/zufang/pn{}/?ClickID=2'.format(number) for number in range(6,51)]#分页抓取
adminCout=6
for arurl in url:
  adminCout=adminCout+1
  res=requests.get(arurl,headers=header)
  soup=BeautifulSoup(res.text,'html.parser')
  arryImg=soup.select('.img_list img')
  print(arryImg)
  count = 0;
  for img in arryImg:
    print(img['lazy_src'])
    _url = img['lazy_src']
    pathName = "E:\\2333\\" + str(adminCout)+"_"+str(count) + ".jpg" # 设置路径和文件名
    result = urllib.request.urlopen(_url) # 打开链接,和python2.x不同请注意了
    data = result.read() # 否则开始下载到本地
    with open(pathName, "wb") as code:
      code.write(data)
      code.close()
      count = count + 1 # 计数+1
      print("正在下载第:", count)
    time.sleep(30)

只是实现功能,至于代码结果如下:

python爬虫爬取某站上海租房图片

结语:

对于python并非为了从net跳出来,学习python只是感兴趣,但是通过这段时间的学习确实有些思想从net的思路中跳了出来,接下来一年的业余时间应该都会花在学习python上,还希望自己能坚持下去。这应该是2017年最后一篇文章,在这给大家拜个早年。

Python 相关文章推荐
Python实现Kmeans聚类算法
Jun 10 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
Pycharm设置界面全黑的方法
May 23 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
python实现狄克斯特拉算法
Jan 17 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 Python
Python爬虫实现百度图片自动下载
Feb 04 #Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 #Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 #Python
numpy.random.seed()的使用实例解析
Feb 03 #Python
Python网络爬虫中的同步与异步示例详解
Feb 03 #Python
Python模块文件结构代码详解
Feb 03 #Python
Python处理文本换行符实例代码
Feb 03 #Python
You might like
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
python基于http下载视频或音频
2018/06/20 Python
python学生信息管理系统(初级版)
2018/10/17 Python
python字典的常用方法总结
2019/07/31 Python
windows下python安装pip方法详解
2020/02/10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
Linux操作面试题
2012/05/16 面试题
毕业生自荐书模版
2014/01/04 职场文书
销售演讲稿范文
2014/01/08 职场文书
个人求职信范文分享
2014/01/31 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
Oracle中DBLink的详细介绍
2022/04/29 Oracle