程序设计思路
爬虫程序的设计思路大同小异,下面是我的设计思路
1.模拟浏览器抓取数据
2.清洗数据
3.存入数据库或者Excel
4.数据分析与处理
需要的类库
requests 用于模拟浏览器向网站发送请求
BeautifulSoup 用于将抓取的html数据进行清洗
html5lib 用于BeautifulSoup对html的解析使用
openpyxl 用于将清洗过的数据存入Excel
抓取数据
链家数据截图
通过对network的分析没有找到链家通过json传递的数据,这时候我们的策略就是读取网页分析网页。
使用python当中的requests模块模拟浏览器访问的过程获取html信息。
这里需要注意的是,当我们需要requests模拟浏览器去访问链家网站的时候在headers里面我们要模拟完整的信息。
headers
模拟完整信息的目的是为了保证防止链家的服务器误以为我们是程序在抓取网站的信息而阻止我们抓取新信息。
代码片段
headers = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, sdch',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Cookie':'lianjia_uuid=9615f3ee-0865-4a66-b674-b94b64f709dc; logger_session=d205696d584e350975cf1d649f944f4b; select_city=110000; all-lj=144beda729446a2e2a6860f39454058b; _smt_uid=5871c8fd.2beaddb7; CNZZDATA1253477573=329766555-1483847667-http%253A%252F%252Fbj.fang.lianjia.com%252F%7C1483851778; CNZZDATA1254525948=58093639-1483848060-http%253A%252F%252Fbj.fang.lianjia.com%252F%7C1483853460; CNZZDATA1255633284=1668427390-1483847993-http%253A%252F%252Fbj.fang.lianjia.com%252F%7C1483851644; CNZZDATA1255604082=1041799577-1483850582-http%253A%252F%252Fbj.fang.li