1. Scrapy 设置文件修改

配置文件就是项目根路径下的 settings,py ,改下面的配置信息

a.遵循人机协议设置成false,否则基本啥也爬不到

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

b. 设置ua,不然大部分网址是爬不到的

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0'

c. 开下request-headers,这样看起来更像浏览器,这个可以按自己的浏览器改下。

# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {'Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
}

d. 设置访问延迟,这个很重要,过于频繁的请求不但容易被封,还可能把一些小站搞崩溃,因为Scrapy本身是异步并发的,不设置害人害己

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 3

e. 日志等级,参照个人习惯设置吧,我设置成了WARNING,这样程序运行后输出就清净了,适合我们学习阶段频繁运行程序

LOG_LEVEL= 'WARNING'

2. 爬取和解析笑话

先用浏览器打开糗百,选择导航栏里的段子,因为这些是纯文本的,先不弄图片和视频。

把url贴过来,先测试下,是成功的。

再回到浏览器中,查看一个笑话的页面源码,然后折叠下,观察下html的结构,很容易就能看到笑话列表路径是这里

OK,写xpath 获取下笑话列表,同样的方法,找下作者 和内容的位置,用xpath定位。

import scrapyclass Qiubai1Spider(scrapy.Spider):name = 'qiubai1'allowed_domains = ['qiushibaike.com']start_urls = ['https://www.qiushibaike.com/text/']def parse(self, response):#获取笑话列表joke_list = response.xpath("//div[contains(@class, 'article block')]")for joke in joke_list:author = joke.xpath("./div/a[2]/h2/text()").extract_first()print(author)content = joke.xpath(".//div[@class='content']/span/text()").extract()print(content)

运行看下效果

已经可以看到作者和笑话的列表了。

3. item 接收

将爬取结果放到item中,item作为scrapy 框架中的数据通用容器,既能便于管理和结构化数据,有能方便和pipeline交互进行数据存储处理。

我们直接修改创建项目后自动生成items.py

import scrapyclass Scpy1Item(scrapy.Item):author = scrapy.Field()content = scrapy.Field()

然后修改spdier中的代码,将数据传递个item

import scrapy
import re
from scpy1.items import Scpy1Itemclass Qiubai1Spider(scrapy.Spider):name = 'qiubai1'allowed_domains = ['qiushibaike.com']start_urls = ['https://www.qiushibaike.com/text/']def parse(self, response):#获取笑话列表joke_list = response.xpath("//div[contains(@class, 'article block')]")for joke in joke_list:# 解析作者、内容author = joke.xpath("./div/a[2]/h2/text()").extract_first()content = joke.xpath(".//div[@class='content']/span/text()").extract()# 封装数据至itemitem = Scpy1Item()item['author'] =  re.sub("[\n]", "", author)item['content'] = re.sub("[\n]", "", ','.join(content))yield item# 打印item,测试结果print(item)

运行看下效果

爬虫-Scrapy(二) 爬取糗百笑话-单页相关推荐

  1. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  2. 初学爬虫之试---爬取51笑话网站(源代码)

    爬取点笑话图片没事的时候躲在被子里看看吧 做实验的等待的时候,有点无聊,就想起来原来自己闲着没事,自己写了个爬虫,爬取了一些搞笑图片,没事看看娱乐下. 相信大家平时都有无聊的时候,那么问题来了,无聊的 ...

  3. scrapy爬虫实战(二)-------------爬取IT招聘信息

    主要从智联招聘,51job,周伯通三个网站爬取IT类企业的招聘信息,并按照编程语言和职位数量和平均薪资进行统计,计算. 源代码github地址: https://github.com/happyAng ...

  4. python爬虫——scrapy+selenium爬取新浪微博及评论

    本文主要对爬取过程中所用到的知识做简单总结,最后有项目链接. 一.项目简介 本项目利用python的scrapy框架+selenium模拟登陆微博来爬取带有关键字的微博及微博下面的评论(1 .2级评论 ...

  5. 爬虫——scrapy框架爬取多个页面电影的二级子页面的详细信息

    文章目录 需求: 总结: 代码: movieinfo.py items.py middleware.py pipelines.py 结果: 附加: crawlspider可以改进: 需求: scrap ...

  6. python view函数_Python爬虫实例(二)——爬取新馆疫情每日新增人数

    python是世界上最美的语言. 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 百香园 百度 各个网站都会统计每日新增,刚学了Matp ...

  7. python爬虫scrapy框架爬取网页数据_Scrapy-Python

    scrapy Scrapy:Python的爬虫框架 实例Demo 抓取:汽车之家.瓜子.链家 等数据信息 版本+环境库 Python2.7 + Scrapy1.12 初窥Scrapy Scrapy是一 ...

  8. Python 柱状图 横坐标 名字_Python爬虫实例(二)——爬取新馆疫情每日新增人数

    python是世界上最美的语言. 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 百香园 百度 各个网站都会统计每日新增,刚学了Matp ...

  9. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  10. python爬虫库scrapy_使用Python爬虫Scrapy框架爬取数据

    时隔数月,国庆期间想做个假期旅游的分析展示. 1.通过Python爬取旅游网站上数据,并存储到数据库 2.通过Echart/FineReport/Superset等数据分析工具对数据展示 环境: Wi ...

最新文章

  1. pandas使用dropna函数删除dataframe中全是缺失值的数据列(drop columns with all missing values in dataframe)
  2. python函数之各种器
  3. 原理图连线有错误提醒_拔罐方法不对=缩短生命,中医提醒,拔火罐警惕三个禁忌...
  4. 【Linux】内核态和用户态
  5. C#调用word打印
  6. B端——复杂业务表单设计
  7. python 的err输出BaseException
  8. 增益和偏移的概念_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO...
  9. 插入网站连接_网站开发与网页制作
  10. 循证医学 计算机辅助决策系统,循证医学重点整理
  11. 详解C3P0(数据库连接池)
  12. linux终端哪个好看,关于linux:Linux-终端最全推荐建议收藏
  13. 网站维护需要做些什么?
  14. 2db多少功率_db换算(db和功率的换算)
  15. 打卡革命纪念地线上徒步大会手机软件,运动打卡活动策划,CSS margin(外边距)
  16. CI/CD的利器k8s+docker
  17. 如何修改图片大小200kb?怎样让图片不超过200k?
  18. 内网搭建maven私库
  19. springboot+mybatis-plus+vue完成微信支付(前后端分离)
  20. 新网站多久被google收录?谷歌当天收录网站靠谱吗?

热门文章

  1. 3个方法教你怎么避免拼多多比价订单
  2. [C语言]——打印素数(质数)
  3. 论文 查重 知网 万方 paperpass
  4. 蓝桥杯嵌入式——TIM
  5. 老婆怀孕记录以及如何照顾老婆总结
  6. 名词解释失效安全_安全管理名词解释
  7. 机器人学习--移动机器人定位导航性能评估规范
  8. Windows 10用的免费HEVC/H265解码器(转发)
  9. ImageJ -介绍与安装
  10. 最近服务器总被webshell攻击,木马也非常猖獗