本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击【python爬虫】分类专栏进行倒序观看:

【重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收益,只为大家学习分享。】

开发环境:【Win10】

开发工具:【Visual Studio 2019】

Python版本:【3.7】

1、重新创建一个空项目【T3】:

2、需要用的模块【requests】【scrapy.selector】

from requests import get
from scrapy.selector import Selector

3、获取访问路径:爬取网站:【http://www.zongheng.com/】

就爬取第一个了:点击开始阅读

进入目录页面:

【审查元素找到对应元素位置】·【目录地址:http://book.zongheng.com/showchapter/1079911.html】

4、CSS选择器【scrapy.selector】

css选择器介绍

  • 在css中选择器是一种模式,用于选择需要添加样式的元素,css对html页面中的元素实现一对一,一对多或者多对一的控制,都需要用到css选择器,html页面中的元素就是通过css选择器进行控制的;

css选择器的基本语法

  • 类选择器:元素的class属性,比如class="box"表示选取class为box的元素;
  • ID选择器:元素的id属性,比如id="box"表示选取id为box的元素;
  • 元素选择器:直接选择文档元素,比如p表示选择所有的p元素,div表示选择所有的div元素;
  • 属性选择器:选择具有某个属性的元素,如*[title]表示选择所有包含title属性的元素、a[href]表示选择所有带有href属性的a元素等;
  • 后代选择器:选择包含元素后代的元素,如li a表示选取所有li 下所有a元素;
  • 子元素选择器:选择作为某元素子元素的元素,如h1 > strong表示选择父元素为h1 的所有 strong 元素;
  • 相邻兄弟选择器:选择紧接在另一元素后的元素,且二者有相同父元素,如h1 + p表示选择紧接在 h1 元素之后的所有p元素;

scrapy 中的css使用方法

以a元素来举例说明

  • response.css('a'):返回的是selector对象;
  • response.css('a').extract():返回的是a标签对象;
  • response.css('a::text').extract_first():返回的是第一个a标签中文本的值;
  • response.css('a::attr(href)').extract_first():返回的是第一个a标签中href属性的值;
  • response.css('a[href*=image]::attr(href)').extract():返回所有a标签中href属性包含image的值;
  • response.css('a[href*=image] img::attr(src)').extract():返回所有a标签下image标签的src属性;

5、根据目录地址获取所有章节页面信息

5.1、获取a标签:

5.2、获取所有章节访问路径:

from requests import get
from scrapy.selector import Selectorhtml=get("http://book.zongheng.com/showchapter/1079911.html").content.decode("utf-8")
sel=Selector(text=html)
result=sel.css("ul li a::attr(href)").extract()
for x in result:print(x)

加上判断:

from requests import get
from scrapy.selector import Selectorhtml=get("http://book.zongheng.com/showchapter/1079911.html").content.decode("utf-8")
sel=Selector(text=html)
result=sel.css("ul li a::attr(href)").extract()
for x in result:if "1079911" in x:print(x)

6、获取每个章节网址返回的信息(为了防止被封,测试中每次只访问2个)

from requests import get
from scrapy.selector import Selectorhtml=get("http://book.zongheng.com/showchapter/1079911.html").content.decode("utf-8")
sel=Selector(text=html)
result=sel.css("ul li a::attr(href)").extract()
#由于防止被封ID,故而测试的时候只访问前两个
count=3
for x in result:if "1079911" in x:count -= 1if count==0:breakhtml=get(x).content.decode("utf-8")sel=Selector(text=html)title=sel.css("div.title_txtbox::text").extract()[0]print(title)info=sel.css("div.content p::text").extract()for j in info:print(j)

7、存储获取的信息为【txt文件】·测试过程还是2次循环

由于创建文件不能创建特殊符号,所以将【:】替换成了【_】

from requests import get
from scrapy.selector import Selectorhtml=get("http://book.zongheng.com/showchapter/1079911.html").content.decode("utf-8")
sel=Selector(text=html)
result=sel.css("ul li a::attr(href)").extract()
#由于防止被封ID,故而测试的时候只访问前两个
count=3for x in result:if "1079911" in x:count -= 1if count==0:breakhtml=get(x).content.decode("utf-8")sel=Selector(text=html)title=sel.css("div.title_txtbox::text").extract()[0]title=title.replace(":","_")info=sel.css("div.content p::text").extract()strInfo=""for j in info:strInfo+=jfile=open(str.format("{0}{1}",title,".txt"),"w",encoding="utf-8")file.write(strInfo)file.close()

8、最终执行:(为了防止被封,故而每次访问间隔1~3s,加上time控制)

from requests import get
from scrapy.selector import Selector
import time
import random
html=get("http://book.zongheng.com/showchapter/1079911.html").content.decode("utf-8")
sel=Selector(text=html)
result=sel.css("ul li a::attr(href)").extract()for x in result:if "1079911" in x:html=get(x).content.decode("utf-8")sel=Selector(text=html)title=sel.css("div.title_txtbox::text").extract()[0]title=title.replace(":","_")info=sel.css("div.content p::text").extract()strInfo=""for j in info:strInfo+=jfile=open(str.format("{0}{1}",title,".txt"),"w",encoding="utf-8")file.write(strInfo)file.close()#每次操作完休息1~3stimeStop=random.randint(1,4)time.sleep(timeStop)print("完成",title)

等了好久。。。如下如:

9、总结:

a)、CSS选择器的用法千变万化,只有多用才能熟能生巧。

b)、个人建议自己多找几个网站,多试试各种各样的CSS选择器截取需要的信息。

欢迎【点赞】、【评论】、【关注】、【收藏】、【打赏】,为推广知识贡献力量。

零基础学Python-爬虫-3、利用CSS选择器爬取整篇网络小说相关推荐

  1. python学起来难不难-零基础学Python爬虫难不难?要怎么学?

    零基础学Python爬虫难不难?要怎么学?众所周知,Python是最容易上手的编程语言,如果有一定基础,学会Python爬虫也是分分钟钟的事.对于零基础的学习者来说,Python爬虫也是比较简单的,只 ...

  2. 利用CSS选择器爬取豆瓣上的图书

    利用CSS选择器爬取豆瓣上的图书 主要技术:熟练掌握requests.BeautifulSoup 爬取图书链接 "https://book.douban.com/latest?icn=ind ...

  3. 零基础学 Python 爬虫(13):urllib 基础使用(三)

    人生苦短,我用 Python 引言 前面两篇基础,我们介绍请求发送的过程. 不知道各位同学有没有想过这样一个问题,如果在爬虫运行的过程中,网络突然波动了下,比如突然网速很慢很慢,造成当前的请求超时,程 ...

  4. 零基础学 Python爬虫(5):前置准备(四)数据库基础

    人生苦短,我用 Python 本篇文章,我们接着介绍基础内容,数据库. 爬虫将数据爬取完成后,总要有地方存放吧,这个数据存在哪里呢? 当然是数据库中,那个说放在 Excel 里的,你给我站住! 当然 ...

  5. 爬虫取中间文本_零基础学 Python 爬虫 I:了解爬虫基础

    人生苦短,我用 Python 引言 各位同学大家好,好久不见(可能只有一两天没见:囧)~~~ 先讲一件事情,昨天为啥没更新. emmmmmmmmm,当然是因为加班啦,快到年底了,公司项目比较忙,最近的 ...

  6. 小白学 Python 爬虫(25):爬取股票信息

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. 同花顺python_小白学 Python 爬虫(25):爬取股票信息

    人生苦短,我用 Python 如果我的文章对您有帮助,请关注支持下作者的公众号:极客挖掘机,您的关注,是对小编坚持原创的最大鼓励:) 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Py ...

  8. 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...

    对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...

  9. 零基础学python爬虫-我是如何零基础开始能写Python爬虫的

    刚开始接触爬虫的时候,简直惊为天人,十几行代码,就可以将无数网页的信息全部获取下来,自动选取网页元素,自动整理成结构化的文件. 利用这些数据,可以做很多领域的分析.市场调研,获得很多有价值的信息.这种 ...

最新文章

  1. java中countinue,.random(用于产生一个随机数)入门可看
  2. 清华大学微纳脑机接口与机器人实验室:生物材料研发工程师招聘
  3. Linux keypad 设备树,SC7731客户配置文档.pdf
  4. 全球及中国绿色建筑产业规模现状与未来走势分析报告2022版
  5. 由浅入深:自己动手开发模板引擎——解释型模板引擎(二)
  6. 2011-2020年中国新经济十年回顾研究报告
  7. SQL*Plus 系统变量之32 - NEWP[AGE]
  8. linux之iptables详解及配置
  9. 移动端Vue3框架demo
  10. STM8S003F3 内部flash调试
  11. 学习笔记(01):2019软考网络工程师--基础知识视频教程-数据通信基础(一)
  12. 《基于 DirectX11 的 3D 图形程序设计案例教程》学习一 HelloWorld
  13. Python中time.sleep(0.001)真的只等待1毫秒吗?
  14. 疫情期间的旅行方式,谷歌街景创意玩法,全新体验来袭|MIXLAB 人工智能
  15. Nginx配置基础-proxy_pass
  16. Winrar 4.0破解
  17. Markdown超链接本地文件
  18. MATLAB获取屏幕大小
  19. 【HashTab初学】哈希表
  20. Linux从零学习记录(三)

热门文章

  1. 19-爬虫之scrapy框架大文件下载06
  2. c语言程序设计函数6,C语言程序设计》第6章函数-XiamenUniversity.PDF
  3. 机器学习:使用numpy实现数据增强(Data Augmentation)
  4. 人工智能——Singleton模式
  5. 利用Quartus设计4位同步二进制加法计数器
  6. 【字符串操作之】从原字符串中切出一段,返回一个新的字符串→→slice方法...
  7. css中定义超级链接的样式
  8. 一个在Windows下的ping脚本(使用WMI 的Win32_PingStatus 实现)
  9. crosstool-ng 编译交叉工具链的常见错误及解决办法
  10. android--系统jar包引用