首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python爬虫之爬取笔趣阁小说

网站链接最后的一位数字为一本书的id值,一个数字对应一本小说,我们以id为1的小说为示例。...进入到网站之后,我们发现有一个章节列表,那么我们首先完成对小说列表名称的抓取 # 声明请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)...,当我去正常访问网站的时候为什么返回回来的数据是乱码呢?...这是因为页面html的编码格式与我们python访问并拿到数据的解码格式不一致导致的,python默认的解码方式为utf-8,但是页面编码可能是GBK或者是GB2312等,所以我们需要让python代码很具页面的解码方式自动变化...我们需要从整个网页数据中拿到我们想要的数据(章节列表数据) 1.首先打开浏览器 2.按F12调出开发者工具 3.选中元素选择器 4.在页面中选中我们想要的数据并定位元素 5.观察数据所存在的元素标签 ?

1.7K30

Python 自动化指南(繁琐工作自动化)第二版:十二、网络爬取

元素的文本是开始和结束标记之间的内容:在本例中是'Al Sweigart'。 将元素传递给str()会返回一个带有开始和结束标签以及元素文本的字符串。...最后,attrs给出了一个字典,其中包含元素的属性'id'和属性id的值'author'。 您还可以从BeautifulSoup对象中拉出所有的元素。...从元素的属性中获取数据 Tag对象的get()方法使得从元素中访问属性值变得简单。向该方法传递一个属性名称字符串,并返回该属性的值。...将属性名'id'传递给get()会返回属性的值'author'。 项目:打开所有搜索结果 每当我在谷歌上搜索一个话题,我不会一次只看一个搜索结果。...在这个页面上,我们试图找到类名为'bookcover'的元素,如果找到这样的元素,我们使用tag_name属性打印它的标签名。如果没有找到这样的元素,我们打印一条不同的消息。

8.7K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何用 Python 构建一个简单的网页爬虫

    Google 提供不同版本的网页,具体取决于用户的用户代理。 我尝试在没有用户代理的情况下在我的移动 IDE 上运行相同的代码,但它无法通过,因为交付的 HTML 文档与我在解析时使用的文档不同。...如您所见,代码首先搜索相关关键字容器(类为card-section的 div 元素)。在此之后,它然后搜索两个 div,每个 div 代表一个类名为brs-col 的列,每个包含 4 个关键字。...然后代码循环遍历两个 div,搜索类名为nVacUb 的p 元素。每个都包含一个锚元素(链接),其名称为关键字。获取每个关键字后,将其添加到 self.keywords_scraped 变量中。...6.jpg 第 7 步:运行代码 要运行该脚本,请创建 KeywordScraper 类的一个实例——我将变量命名为“ s”并将关键字“python tutorials”作为参数传递。...您可以传递任何有意义的关键字,例如“Best games pc”,您将获得作为参数传递的该关键字的关键字。 创建类的实例后,调用scrape_SERP方法,然后调用write_to_file方法。

    3.5K30

    python 爬虫学习笔记

    在上面的例子中,我们传递了一个值以及一个列表,下面打印了详细的信息,与之前对比你会发现,网站确实收到了我们传递的参数,你也可以从 "url" 中发现这点。...key1=value1&key2=value2&key2=value3" } post 请求 在 post 请求中,我们往往需要传递一些参数,这与我们之前讨论的是类似的,只需要简单地传递一个字典给 data...会话对象 在之前的请求中,每次请求其实都相当于发起了一个新的请求。也就是相当于我们每个请求都用了不同的浏览器单独打开的效果。 在一些站点中,我们需要保持一个持久的会话怎么办呢?...直接搜索类为 title 的 span 明显是不可行的,因为我们看到电影的英文名也是同样的包装,并不唯一确定。...接着返回一个 BeautifulSoup 类型的对象。 在第 5 行代码中,正如我们前面讨论的,找到所有类型为 hd 的 div。

    42210

    二、爬虫基础库

    为什么 find_all("p", "title") 返回的是CSS Class为”title”的标签?...b")): print(tag.name) # body # b  传列表 如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有标签和...p a a a p '''  传方法 如果没有合适过滤器,那么还可以定义一个方法,方法只接受一个元素参数,如果这个方法返回 True 表示当前元素匹配并且被找到,如果不是则反回 False 下面方法校验了当前元素... find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果. find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None ...beautifulsoup的css选择器 我们在写 CSS 时,标签名不加任何修饰,类名前加点,id名前加 #,在这里我们也可以利用类似的方法来筛选元素,用到的方法是 soup.select(),返回类型是

    1.8K90

    Python-并发下载-Queue类

    import queue Queue 类是 Python 标准库中线程安全的队列实现,提供了一个适用于多线程编程的先进先出的数据结构——队列,用于生产者和消费者线程之间的信息传递。...队列是线程间最常用的交换数据的形式。为什么使用队列(Queue),而不使用 Python 原生的列表(List)或字典(Dict)类型呢?原因是 List、Dict等数据存储类型都是非线程安全的。...在多线程中,为了防止共享资源的数据不同步,对资源加锁是个重要的环节。 Queue 类实现了所有的锁逻辑,能够满足多线程的需求,所以在满足使用条件的情况下,建议使用队列。...② empty() 如果队列为空,返回 True,否则返回 False。 ③ full() 如果队列已满则返回 True,否则返回 False。 ④ qsize() 返回队列的大小。...在 spider.py 文件中导入 BeautifulSoup 类 from bs4 import BeautifulSoup 创建一个 BeautifulSoup 类的对象,并通过 CSS 选择器获取所有的

    87220

    04.BeautifulSoup使用

    soup = BeautifulSoup(html_str) 提示:如果一段HTML或XML文档格式不正确的话,那么在不同的解析器中返回的结果可能是不一样的,所以要指定某一个解析器。...1、Tag 的使用: 可以利用beautifulsoup4对象加标签名 轻松地获取这些标签的内容,这些对象的类 bs4.element.Tag。...,返回 列表 例1: print(type(p.contents)) #list print(p.contents) #可通过索引获取它的某一个元素。...例: BeautifulSoup对象.find_all(['p','a'])#获取所有p标签,和a标签 -attrs:通过attrs搜索,通过传递给attrs一个字典,来搜索参数。...+ .mysis")# 选择id=link1后的下一个兄弟节点标签 2、通过类名查找: 例1: soup.select("a.mysis")# 选择a标签,其类属性为mysis的标签 soup.select

    2.2K30

    爬虫 | Python爬取网页数据

    在正式开始爬取网页前,先了解一下 class 和 id 属性。这些特殊属性确定了 HTML 元素名称,当我们爬取时更容易进行交互。一个元素可以有多个类,一个类可以和元素之间共享。...每个元素只能有一个 id,而一个 id 只能在一个网页中使用一次。class 和 id 是可选的,不是每一个元素都有 class 和 id。...强行解释:你(元素)有很多朋友(类),朋友(类)之间可能有你(元素)这个交集(共享),而你(元素)只有一个身份证(id),比如你在认证领奖时身份证只能用一次,不能一个身份证领多次。...打开 标签的内容就可以发现每一天的预测数据:日期,温度,简要描述。...将上述信息传递给 DataFrame 类,字典中的键表示列名,键值表示每一列的值: import pandas as pd weather = pd.DataFrame({ "period

    4.7K10

    python爬虫:BeautifulSoup库基础及一般元素提取方法

    ://python123.io/ws/demo.html' r = requests.get(url) demo = r.text # 服务器返回响应 soup = BeautifulSoup(demo...()) # 使用prettify()格式化显示输出 得到一个BeautifulSoup对象后, 一般通过BeautifulSoup类的基本元素来提取html中的内容 2.提取html中的信息 demo...('a标签和b标签的内容:', soup.find_all(['a', 'b'])) # 把a标签和b标签作为一个列表传递,可以一次找到a标签和b标签 (2) for t in soup.find_all...(class_='title')) # 指定属性,查找class属性为title的标签元素,注意因为class是python的关键字,所以这里需要加个下划线'_' print('id属性为link1的标签元素是...:', soup.find_all(id='link1')) # 查找id属性为link1的标签元素 (5) print(soup.head) # head标签 print(soup.head.contents

    1K30

    爬虫基础

    ,('key1','value2'))//如果一个key对应多个值dat=requests.post('http://httpbin.org/post',params=payload)#这个网址可以将传递的参数返回...查找与定位数据BeautifulSoup在爬取过程中能快速定位到元素并提取数据,BeautifulSoup要获取某条数据首先要得到它的标签,然后找到这条标签里可以用来定位的属性,例如:class、id等...,以列表方式cun'chutr_list=bs.select(".mnav")#找到有mnav类元素(css中.表示类名)tr_list=bs.select("#mnav")#找到有mnav id元素(...css中#表示id名)tr_list=bs.select("a[class='bri']")#找到有bri类名的a标签,通过属性查找tr_list=bs.select("head>title")#找到有...head下title元素,子标签tr_list=bs.select(".mnav~.bri")#找到有与mnav同级的bri类,兄弟标签print(tr_list)print(tr_list[0].get_text

    9910

    Python爬虫学习笔记之爬虫基础库

    为什么 find_all("p", "title") 返回的是CSS Class为”title”的标签?...p a a a p '''  传方法 如果没有合适过滤器,那么还可以定义一个方法,方法只接受一个元素参数,如果这个方法返回 True 表示当前元素匹配并且被找到,如果不是则反回 False 下面方法校验了当前元素... find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果. find_all() 方法没有找到目标是返回空列表, find() 方法找不到目标时,返回 None ...回到顶部 beautifulsoup的css选择器 我们在写 CSS 时,标签名不加任何修饰,类名前加点,id名前加 #,在这里我们也可以利用类似的方法来筛选元素,用到的方法是 soup.select(..."link1">Elsie] (4)组合查找 组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,例如查找 p 标签中,id 等于 link1的内容,二者需要用空格分开

    1.8K20

    初学指南| 用Python进行网页抓取

    它定义函数和类,实现URL操作(基本、摘要式身份验证、重定向、cookies等)欲了解更多详情,请参阅文档页面。 BeautifulSoup:它是一个神奇的工具,用来从网页中提取信息。...如上所示,可以看到HTML标签的结构。这将有助于了解不同的可用标签,从而明白如何使用它们来抓取信息。 3.处理HTML标签 a.soup.:返回在开始和结束标签之间的内容,包括标签在内。....string: 返回给定标签内的字符串 ? c.找出在标签内的链接:我们知道,我们可以用标签标记一个链接。因此,我们应该利用soup.a 选项,它应该返回在网页内可用的链接。...在chrome浏览器中,可以通过在所需的网页表格上单击右键来查询其类名–>检查元素–>复制该类名或通过上述命令的输出找到正确的表的类名。 ? ?...我曾使用BeautifulSoup和正则表达式来做同样的事情,结果发现: BeautifulSoup里的代码比用正则表达式写的更强大。用正则表达式编写的代码得随着页面中的变动而进行更改。

    3.7K80

    Python3网络爬虫实战-29、解析库

    BeautifulSoup 已成为和 lxml、html6lib 一样出色的 Python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。...比如 name 属性的值是唯一的,返回的结果就是单个字符串,而对于 class,一个节点元素可能由多个 class,所以返回的是列表,所以在实际处理过程中要注意判断类型。...="link1"> Elsie )] 返回结果是一个生成器类型,我们在这里用列表输出了它的索引和内容,可以发现列表中的元素就是...对于一些常用的属性比如 id、class 等,我们可以不用 attrs 来传递,比如我们要查询 id 为 list-1 的节点,我们可以直接传入 id 这个参数,还是上面的文本,我们换一种方式来查询。...find() 除了 find_all() 方法,还有 find() 方法,只不过 find() 方法返回的是单个元素,也就是第一个匹配的元素,而 find_all() 返回的是所有匹配的元素组成的列表。

    1.8K30

    python 手把手教你基于搜索引擎实现文章查重

    代码中,id的值大多数情况下唯一(除非是打错了),在此选择id作为获取搜索框元素对象的标记。...使用与查看搜索框相同的元素查看方法查找“百度一下”按钮的id值: [在这里插入图片描述] 使用find_element_by_id方法获取到该元素对象,随后使用click方法使该按钮完成点击操作: search_btn..., "page")))替代了sleep,用于判断EC.presence_of_element_located((By.ID, "page"))是否找到id值为page的网页元素,id为page的网页元素为分页按钮的标签...SearchEngine类主要用于不同搜索引擎的配置编写。...所有不同种类的搜索引擎继承EngineConf基类,使子类都有了get_conf方法。EngineConfManage类用于不同搜索引擎的调用,传入引擎名即可。

    2.2K41
    领券