scrapy爬虫项目及爬虫文件创建(terminal):
1、在terminal进入要创建项目的目录
2、在terminal创建工程:scrapy startproject xxxProject(工程名)
3、cd xxxProject进入刚创建的工程
4、在spiders子目录中创建一个爬虫文件:scrapy genspider spiderName www.xxx.com(要 爬取的目标网页)
5、编写好爬虫文件后,不能立即执行,先在配置文件setting.py中,将ROBOTSTXT_OBEY 改为False,并进行User伪装。
6、执行爬虫:scrapy crawl spiderName (–nolog)【执行时加括号里的内容,则只打印结 果,不打印日志信息】、终端ctrl+l是【清屏快捷键】
【例】爬取糗事百科的第一页段子和作者内容
爬取网站:https://www.qiushibaike.com/text/
工程名:qiubaiPro
爬虫文件:qiubai.py
#qiubai.py 文件内容
import scrapy
class QiubaiSpider(scrapy.Spider):
name = 'qiubai'
#allowed_domains = ['www.xxx.com']
start_urls = ['https://www.qiushibaike.com/text/']
#数据解析操作在parse函数内进行
def parse(self, response):
#解析:作者的名称+段子内容
div_list = response.xpath('//div[@class="col1 old-style-col1"]/div')
for div in div_list:
#xpath返回列表,但列表元素一定是selector类型对象
#extract可以将selector对象中data参数存储的字符串提取出来
# author = div.xpath('./div[1]/a[2]/h2/text()')[0].extract()
#extract_first()表示将列表中对应的第0个元素的selector对象进行extract操作
author = div.xpath('./div[1]/a[2]/h2/text()').extract_first()
content = div.xpath('./a[1]/div/span//text()').extract()
#join(): 连接字符串数组。
# 将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
content = ''.join(content)
print(author,content)
执行结果:
忧郁的创可贴
有人说,这是个看脸的世界,我不赞同这说法,我用我亲身经历,证明了能力比颜值更重要。大学毕业后,和闺蜜去我们当地一家有名气的公司,面试销售
,话说我这闺蜜人长得十分漂亮。才招聘一人,却来了几十个应聘者,竞争十分激烈。我和闺蜜一路过关斩将,到了最后阶段,由老板亲自面试。老板问了
我们一些问题后,果断拍板宣布我被录取,我还有点懵,老板说:本公司看中的是能力,不是颜值。遇到这样的老板,还有什么说的,唯有努力工作报答他
啊。
…
查看全文