上篇我们用了beautifulsoup4做了简易爬虫,本次我们用scrapy写爬虫58同城的租房信息,可以爬取下一页的信息直至最后一页。
1、scrapy的安装
这个安装网上教程比较多,也比较简单,就不说了。
2、创建scrapy项目
在控制台 输入命令 scrapy startproject 项目名
3、导入项目到编译器,我这里用的pyscram,并在spiders文件夹下面创建zufang.py文件
在zufang.py写入以下代码,其中去除了空行和空格
import scrapy
class itemSpider(scrapy.Spider):
# 爬虫名 启动爬虫时需要的参数*必需
name = 'zufang'
# 爬取域范围 允许爬虫在这个域名下进行爬取(可选) 可以不写
# allowed_domains = ['itcast.cn']
# 起始url列表 爬虫的第一批请求,将求这个列表里获取
start_urls = ['https://hf.58.com/chuzu/?PGTID=0d100000-0034-561b-52aa-3b0813a79f76&ClickID=2']
def parse(self, response):
ul = response.xpath("//div[@class='des']//h2//a/text()")
for data in ul:
a= data.extract()
b=str(a).strip()
if b is not None:
if b != '':
print(b)
item = {
}
item['address']=b
yield item
next_url = response.xpath("//a[@class='next']/@href").extract_first()
# print("下一页地址:"+next_url)
if next_url !='':
yield scrapy.Request(next_url,callback=self.parse)
5、在settings文件里面做如下设置
第一个注释,默认事true,改成false
第二个默认是注释的,打开就行
6、编写pipelines文件,把爬取的信息写道文件里面,代码如下:
# 构造方法
def __init__(self):
self.fp = None # 定义一个文件描述符属性
# 重写父类的开始和结束方法
# 开始爬虫时,执行一次
def open_spider(self, spider):
print('爬虫开始')
self.fp = open('./data.txt', 'w')
def process_item(self, item, spider):
self.fp.write(item['address'] + "\n")
return item
#结束爬虫时,执行一次
def close_spider(self,spider):
self.fp.close()
print('爬虫结束')
7、运行爬虫
命令:scrapy crawl zufang