这段时间看了唐松老师写的《python网络爬虫从入门到实践》,学到许多网络爬虫方面的知识,也以书里的实践项目进行练手。
我的第一篇的网络爬虫心得,就以书里第五章的实践:爬虫实践:房屋价格数据,参考书里的内容进行练手。
实践项目是获取安居客网站上北京二手房的数据。本项目需要获取前10页二手房源的名称、价格、几房几厅、大小、建造年份、联系人、地址、标签。网页地址为:http://beijing.anjuke.com/sale/。
这里我把北京改为了泉州丰泽区。
第一步,网站分析。
和书里介绍的内容一样,网站一页有60个二手房信息,翻页有明显的规则,对于翻页,我写了一个获得页面地址的列表。
link = []
for i in range(1,11):
link.append('https://quanzhou.anjuke.com/sale/fengzequ/p'+str(i)+'/#filtersort')
二手房信息的结构,是以每一套房进行展开,包含了房源的名称、价格、几房几厅、大小、建造年份、联系人、地址等相关内容。这些内容对应的标签为:
每一套房源的标签: li class=“list-item over-bg” data-from=""
房源的名称:div class=“house-title” 下的a标签
几房几厅: div class="details-item"下的span
面积大小:div class="details-item"的contents[3]
层高:div class="details-item"的contents[5]
建站年份:div class="details-item"的contents[7]
价格:span,class=“price-det”
单价:span,class=“unit-price”
地址:span,class=“comm-address”
有了这些内容对应的标签,就可以利用BeautifulSoup库的find来找到对应的内容。
第二步,爬虫代码编写
首先,导入requests和BeautifulSoup库
import requests
from bs4 import BeautifulSoup
接着,定制请求头,利用for循环生成每个页面的链接
header = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
link = []
for i in range(1,11):
link.append('https://quanzhou.anjuke.com/sale/fengzequ/p'+str(i)+'/#filtersort')
定制requests请求头,利用network找到Hearders。
在定制requests请求头要注意,user-agent后的内容直接从网页拷贝出来会有一个空格,需要去掉,不然会出错。