起源于数据挖掘课程设计的需求,参考着17年这位老兄写的代码:https://blog.csdn.net/sinat_36772813/article/details/73497956?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242
在此感谢
1.导入库及准备工作
主要用到了三个库,分别用于获取、解析、和操作excel
#_*_coding:utf-8_*_
# 导入开发模块
import requests
# 用于解析html数据的框架
from bs4 import BeautifulSoup
# 用于操作excel的框架
import xlwt
# 创建一个工作
book = xlwt.Workbook()
# 向表格中增加一个sheet表,sheet1为表格名称 允许单元格覆盖
sheet = book.add_sheet('sheet1', cell_overwrite_ok=True)
2.分析爬取方法
然后我们需要分析一下网页,看看要爬取什么数据以及如何爬取。
链家杭州二手房网址为:https://hz.lianjia.com/ershoufang/
可以发现,链家把杭州分为15个区域。
其中,截止到2020年09月19日,大江东和建德区域数据为0条,桐庐数据为3条,淳安数据共36条。和其他区域相比,这几个区域数据量太少,因此可以在后续爬取过程中略去。
然后往下拉,我们需要的大致就是爬取每个区每套房红色框内的数据了。
按F12打开开发者工具,可以看到:
每套房的数据包在一个 li 标签中,所有的 li 标签包在一个 ul 标签中,因此可以先获取到ul标签,再获取所有的li标签,用循环加改变url的方式,获取每个区每一页的数据。li 标签内的数据就一个一个慢慢取出来存储就好,详细看代码就不说了。
分析可知‘url+区名(如xihu)+页码(如pg2)’即可构成整体url
3.数据爬取过程
3.1定义第一个方法,在最初的url后面加上区域,并获取总页码数。
# 指定爬虫所需的杭州各个区域名称
citys = ['xihu','qiantangxinqu','xiacheng','jianggan','gongshu','shangcheng','binjiang','yuhang',
'xiaoshan','fuyang','linan']
def getHtml(city):
url = 'https://hz.lianjia.com/ershoufang/%s/' % city
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
request = requests.get(url=url,headers=headers)