解决方案:1.【代码】5a5x采集器 - Python网络爬虫实战

优采云 发布时间: 2022-10-17 20:29

  解决方案:1.【代码】5a5x采集器 - Python网络爬虫实战

  page_total = int(etree.HTML(urllib.request.urlopen(source_url).read(“gbk”)).xpath(“//*[@id=”pages“]/b[2]/text()')[0].替换(”/“,”“))

  # 输入数据采集类别的所有页码

  对于范围内eve_content_list_page(1,page_total+1):

  # 每页数据

  url = source_url + “/” + str(eve_content_list_page) + “.html”

  # 获取网页的源代码

  page_source = etree.HTML(“gbk”)

  # 提取每页所有内容

  content_list = page_source.xpath(“//dl[@class=”down_list“]/dt/a/@href')

  

  # 根据不同内容下载数据

  对于content_list中的eve_content:

  尝试:

  # 打开内容详情页面

  content_url = “” + eve_content

  content_page_souce = etree.HTML content_url

  # 提取源代码的标题

  标题 = content_page_souce.xpath(“//标题/跨度/文本()”)[0]

  # 提取源代码的下载页面网址

  download_url = “” + content_page_souce.xpath(“//*[@id=”down_address“]/a/@href”)[0]

  

  # 根据下载页面网址获取文件的确切网址

  file_url = “” + etree.HTML @href download_url

  # 打开文件URL,以二进制形式存储到本地指定文件夹,文件以标题命名

  以开放(eve_list_data + “/” + 标题 + “.zip”,“wb”) 为 f:

  f.write(urllib.request.urlopen(file_url).read())

  # 输出完成的内容

  打印(eve_list_data,标题)

  除 e 例外:

  打印(content_url)

  官方数据:如何Python数据采集-开始爬虫

  目标是抓取网页的外部链接,实现递归循环。

  单个域名的遍历

  网络爬虫就是抓取目标网页,然后遍历到数据信息,然后用链接继续遍历,以此类推。

  第一步:获取页面上的所有链接

  运行效果图

  发现会有一些无用的数据。一些href值只作为页块跳转。我们可以使用正则表达式对其进行优化和过滤,只获取以 HTML 结尾的链接。

  第 2 步:递归获取网页

  第一步,我们基本上获取了一个网页的所有链接地址,第二步显然是获取这些链接网页的链接,进而获取这些网页的数据。

  例如,我们在 Wiki 中的 Python 条目下获取相关条目的链接。既然有我们不关心的链接,所有的链接都需要用正则表达式过滤掉,然后就有大量的链接链接。我们不能把它们都用完。一些条款。

  运行结果(一分钟产生150条数据,如果不手动停止,应该不会停止爬取)

  两个采集整个网站

  在整个站点上执行所有链接采集,当然,像wikis这样的*敏*感*词*网站数据,几乎不可能采集全部。

  

  运行结果

  递归爬取网页的原理:

  三个使用 Scrapy采集

  高层建筑是用最简单的一砖一瓦搭建起来的,而编写一个网络爬虫也是由许多简单重复的操作组成,找到页面的关键信息和外部链接,然后重复这个循环。Scrapy 库可以大大减少对网页链接的搜索(无需自己做大量的过滤条件和正则表达式),同时也降低了识别工作的复杂度。

  使用参考;

  第一步是创建一个Scrapy项目

  报错,安装scrapy,cmd-pip install scrapy

  错误,未安装视觉 14

  重装成功,再次执行

  scrapy startproject 教程

  创建成功后目录结构如下

  

  第二步,定义数据源,修改item(参考官网)

  第三步,创建爬虫类(参考官网)

  第四步,进入spider目录,然后运行爬虫

  错误,缺少 win32 库

  点安装 pywin32

  再次成功运行

  第一个Scrapy helloworld基本完成,流程大致如下:

  Scrapy 在 Spider 的 start_urls 属性中为每个 URL 创建一个 scrapy.Request 对象,并将 parse 方法作为回调分配给 Request。

  在 Request 对象被调度后,执行会生成一个 scrapy.http.Response 对象并将其发送回蜘蛛 parse() 方法。

  如果有用,以后继续深入学习Scrapy。

  另外,我也有初学者教程,对大家免费。公众号请关注直接获取,谢谢

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线