博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抓取安居客二手房经纪人数据,python爬虫自动翻页
阅读量:6323 次
发布时间:2019-06-22

本文共 2013 字,大约阅读时间需要 6 分钟。

  hot3.png

和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到。 基于此能不能做网页的循环爬取呢。 能否判断页面读取完毕进行自动翻页? 查询了一些资料后得出了如下代码:

import requestsfrom lxml import etreecurrent_url = 'http://chengdu.anjuke.com/tycoon/p1'headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}allinfo = []def getdata(url):    resouce = requests.get(url,headers = headers)    resouce.encoding = 'utf-8'    selector = etree.HTML(resouce.text)    return selectordef claw_data_from_detail_page(selector,j):    info = {}    str = '//*[@id="list-content"]/div[%s]'%j    info['person'] = selector.xpath(str+'/div[1]/div/h3/a/text()')[0]    info['phone'] = selector.xpath(str+'/div[2]/text()')[1].strip()    return info    while True:        # 下载页面        page = getdata(current_url)        print("正在爬取" + current_url)        # 根据我们定义的selector选择感兴趣的页面元素列表        data_list = page.xpath('//*[@id="list-content"]/div')                # 如果这个页面选择不到元素了,说明我们已经读取完了        # 也可以计算页面元素数量的最大值,比如你第一页爬到了10个元素        # 当你到了第N页,你只爬到了2个,说明这就是最后一页了        if len(data_list) == 0:             break        # 对每一个元素,我们把它放进另一个函数中读取        i=0        for data in data_list:            i += 1            info = claw_data_from_detail_page(data,i)             allinfo.append(info)        # 当这一页完成的时候,我们就更新一下当前页面的url地址,        # 回到while loop最开始的地方开始下一页                end = page.xpath('/html/body/div[6]/div[2]/div[3]/div/i[@class="iNxt"]')        if len(end)>0:            break        current_url = page.xpath('/html/body/div[6]/div[2]/div[3]/div/a[@class="aNxt"]/@href')[0]        print(allinfo)

[caption id="attachment_85" align="alignnone" width="300"]<img src="http://www.nigaea.com/wp-content/uploads/2016/12/WX20161222-180257-300x91.png" alt="抓取安居客二手房经纪人数据,python爬虫自动翻页" width="300" height="91" class="size-medium wp-image-85" /> 抓取安居客二手房经纪人数据,python爬虫自动翻页[/caption] 注意:

  • 为了快速测试current_url中p1可以修改为p200。
  • 这个程序主要是学习在无法得知总的页面数的时候,如何抓取所有页面。

欢迎到我博客吐槽,code有很多不优雅。

转载于:https://my.oschina.net/at5/blog/816348

你可能感兴趣的文章
SVN使用教程总结
查看>>
Chrome各个版本小常识
查看>>
阿里云图片压缩上传代码
查看>>
java关于split分割字符串,空的字符串不能得到的问题
查看>>
JavaScript函数式编程
查看>>
C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
查看>>
java对象数组
查看>>
Android中使用dimen定义尺寸(转)
查看>>
Webserver管理系列:11、注意默认的隐含共享
查看>>
《学习OpenCv》 笔记(1)
查看>>
不同平台下Java环境变量的设置
查看>>
14、Java中用浮点型数据Float和Double进行精确计算时的精度问题
查看>>
[百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数
查看>>
温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
查看>>
2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈
查看>>
mysql触发器的作用及语法
查看>>
strtok、strtok_s、strtok_r 字符串切割函数
查看>>
shell编程基础(5)---循环指令
查看>>
八皇后问题
查看>>
稀疏矩阵
查看>>