admin管理员组文章数量:1026989
为什么80%的码农都做不了架构师?>>>
和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到。 基于此能不能做网页的循环爬取呢。 能否判断页面读取完毕进行自动翻页? 查询了一些资料后得出了如下代码:
import requests
from lxml import etree
current_url = 'http://chengdu.anjuke/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 selector
def 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/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有很多不优雅。http://www.nigaea/dataanalysis/84.html
转载于:https://my.oschina/at5/blog/816348
为什么80%的码农都做不了架构师?>>>
和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到。 基于此能不能做网页的循环爬取呢。 能否判断页面读取完毕进行自动翻页? 查询了一些资料后得出了如下代码:
import requests
from lxml import etree
current_url = 'http://chengdu.anjuke/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 selector
def 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/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有很多不优雅。http://www.nigaea/dataanalysis/84.html
转载于:https://my.oschina/at5/blog/816348
版权声明:本文标题:抓取安居客二手房经纪人数据,python爬虫自动翻页 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1726435803a623952.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论