副问题[/!--empirenews.page--]
技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战
房价高是北漂们一向体谅的话题,本文就对北京的二手房数据举办了说明。
本文首要分为两部门:Python爬取赶集网北京二手房数据,R对爬取的二手房房价做线性回归说明,得当方才打仗Python&R的同窗们学衔拷寮。
01、Python爬取赶集网北京二手房数据

入门爬虫一个月,以是对每一个网站都行使了Xpath、Beautiful Soup、正则三种要领别离爬取,用于操练固定。数据来历如下:

Xpath爬取:
这里首要办理运用Xpath怎样判定某些元素是否存在的题目,好比假如衡宇没有装修信息,不加上判定,某些元素不存在就会导致爬取间断。
- import requests
- from lxml import etree
- from requests.exceptions import RequestException
- import multiprocessing
- import time
-
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
-
- def get_one_page(url):
- try:
- response = requests.get(url, headers=headers)
- if response.status_code == 200:
- return response.text
- return None
- except RequestException:
- return None
-
- def parse_one_page(content):
- try:
- selector = etree.HTML(content)
- ALL = selector.xpath('//*[@id="f_mew_list"]/div[6]/div[1]/div[3]/div[1]/div')
- for div in ALL:
- yield {
- 'Name': div.xpath('dl/dd[1]/a/text()')[0],
- 'Type': div.xpath('dl/dd[2]/span[1]/text()')[0],
- 'Area': div.xpath('dl/dd[2]/span[3]/text()')[0],
- 'Towards': div.xpath('dl/dd[2]/span[5]/text()')[0],
- 'Floor': div.xpath('dl/dd[2]/span[7]/text()')[0].strip().replace('n', ""),
- 'Decorate': div.xpath('dl/dd[2]/span[9]/text()')[0],
- #地点必要非凡处理赏罚一下
- 'Address': div.xpath('dl/dd[3]//text()')[1]+div.xpath('dl/dd[3]//text()')[3].replace('n','')+div.xpath('dl/dd[3]//text()')[4].strip(),
- 'TotalPrice': div.xpath('dl/dd[5]/div[1]/span[1]/text()')[0] + div.xpath('dl/dd[5]/div[1]/span[2]/text()')[0],
- 'Price': div.xpath('dl/dd[5]/div[2]/text()')[0]
- }
- if div['Name','Type','Area','Towards','Floor','Decorate','Address','TotalPrice','Price'] == None:##这里加上判定,假如个中一个元素为空,则输出None
- return None
- except Exception:
- return None
-
- def main():
- for i in range(1, 500):#这里配置爬取500页数据,在数据范畴内,各人可以自配置爬取的量
- url = 'http://bj.ganji.com/fang5/o{}/'.format(i)
- content = get_one_page(url)
- print('第{}页抓取完毕'.format(i))
- for div in parse_one_page(content):
- print(div)
-
- if __name__ == '__main__':
- main()
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|