前言
因为需要一些二手房数据,菜鸟开启了爬虫之路!不过需要注意的是,在爬取数据时,要遵守《中华人民共和国网络安全法》以及《规范互联网信息服务市场秩序若干规定》等相关法律规定(毕竟我们要做一个知法懂法的好公民,不能违法!)。
完整源代码请点击这里是我!
了解爬虫
首先需要了解一下爬虫机制、python的基本语法、爬虫框架(scrapy等)、爬虫常用的一些库、网页解析工具(正则表达式、XPath等)、反爬虫机制,进阶后可能还要多线程、多进程爬取、以及一些特殊网页的爬取(登录问题、动态网页等)等等… …作为菜鸟的我,只为了能够快速获取数据,有些内容也没有深层次的理解,如果大家对于爬虫非常感兴趣,也可以专门去学一学相对应的内容。这里简单说一下我的理解:我所理解的爬虫过程就是模拟浏览器发送请求,然后下载网页代码,只提取有用的信息,最后放入数据库或者文件中。
爬虫目录结构
在安装好爬虫需要的一些库(scrapy)等以后,就可以找爬虫框架或者github上下载的爬虫代码,如下图所示,是爬虫目录的结构,这里包括了:
spiders文件夹 #放置关于爬虫部分的内容
_init_.py #项目初始化文件
items.py #数据容器文件
middlewares.py #中间件
pipelines.py #管道文件
settings.py #项目的设置文件
scrapy.cfg #项目运行的配置文件
爬虫主体代码
首先先看spiders文件夹里的ershoufang.py文件 ,这里的逻辑是这样的,以我爬取的安居客长春二手房为例:
——>先点进安居客首页
——>点击二手房、房源
——>进入了二手房页面点击南关(因为我是需要分区的房屋信息,所以我是点进去每个区来爬取的),这里需要注意上方的网址,这也是我们最开始的初始网址,简单观察可以发现后面的数字是从p1-50的,代表着页数,nanguan代表着这个区
——>接下来网页向下翻就是每个我们需要爬取的链接入口
——>点进去就是每一个房源信息了。
知道了这个逻辑,代码就好理解了,我们上代码
!!!
class ershoufangSpider(scrapy.Spider):
name = "ershoufang"
allowed_domains = ['anjuke.com']
# 生成起始网址
start_urls = []
for i in range(1,51):
start_urls.append('https://heb.anjuke.com/sale/hulan/p%d/#filtersort'%i)
# 采集每个房屋网址链接
def parse(self,response):
# item = ErshoufangItem()
selector = Selector(response)
#url = Selector(respone)
urls =selector.xpath(".//ul[@class='houselist-mod houselist-mod-new']/li")
for url in urls:
detail_url = url.xpath(".//div[@class='house-title']/a/@href").extract()[0]
# item["url"] = detail_url
yield scrapy.Request(detail_url,callback = self.parse_item)
# yield item
# 采集每个链接里面的房屋信息
def parse_item(self,response