文章采集api(在之前的文章中Python实现“维基百科六度分隔理论”)
优采云 发布时间: 2022-02-24 21:13文章采集api(在之前的文章中Python实现“维基百科六度分隔理论”)
在之前的文章 Python实现“维基百科六度分离理论”基础爬虫中,我们实现了一个网站随机从一个链接到另一个链接,但是如果我们需要系统对整个< @网站 分类,或者要搜索 网站 上的每一页,我们该怎么办?我们需要采集整个网站,但这是一个非常占用内存的过程,尤其是在处理大的网站时,更合适的工具是使用数据库来存储< @k11 资源为@>,之前也说过。这是如何做到的。网站地图站点地图网站地图,也称为站点地图,是一个页面,上面放置了网站上所有需要被搜索引擎抓取的页面(注:不是所有页面,所有 文章 链接。大多数人在 网站 上找不到所需信息时,可能会求助于 网站 地图。搜索引擎蜘蛛我非常喜欢 网站maps。对于 SEO,网站maps 的好处: 1. 为搜索引擎蜘蛛提供可以浏览整个 网站 的链接,简单地反映 网站 的整体框架 2. 为搜索引擎提供一些链接蜘蛛指向动态页面或其他方法更难访问的页面;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。当他们在 网站 上找不到他们需要的信息时,地图作为一种补救措施。搜索引擎蜘蛛我非常喜欢 网站maps。对于 SEO,网站maps 的好处: 1. 为搜索引擎蜘蛛提供可以浏览整个 网站 的链接,简单地反映 网站 的整体框架 2. 为搜索引擎提供一些链接蜘蛛指向动态页面或其他方法更难访问的页面;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。当他们在 网站 上找不到他们需要的信息时,地图作为一种补救措施。搜索引擎蜘蛛我非常喜欢 网站maps。对于 SEO,网站maps 的好处: 1. 为搜索引擎蜘蛛提供可以浏览整个 网站 的链接,简单地反映 网站 的整体框架 2. 为搜索引擎提供一些链接蜘蛛指向动态页面或其他方法更难访问的页面;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。@网站。搜索引擎蜘蛛我非常喜欢 网站maps。对于 SEO,网站maps 的好处: 1. 为搜索引擎蜘蛛提供可以浏览整个 网站 的链接,简单地反映 网站 的整体框架 2. 为搜索引擎提供一些链接蜘蛛指向动态页面或其他方法更难访问的页面;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。@网站。搜索引擎蜘蛛我非常喜欢 网站maps。对于 SEO,网站maps 的好处: 1. 为搜索引擎蜘蛛提供可以浏览整个 网站 的链接,简单地反映 网站 的整体框架 2. 为搜索引擎提供一些链接蜘蛛指向动态页面或其他方法更难访问的页面;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。为搜索引擎蜘蛛提供可以浏览整个网站的链接,简单反映网站的整体框架 2. 为搜索引擎蜘蛛提供一些链接,指向动态页面或更难到达的页面其他方法;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。为搜索引擎蜘蛛提供可以浏览整个网站的链接,简单反映网站的整体框架 2. 为搜索引擎蜘蛛提供一些链接,指向动态页面或更难到达的页面其他方法;3、作为潜在的落地页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。作为一个潜在的着陆页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。作为一个潜在的着陆页,可以针对搜索流量进行优化;4. 如果您访问如果访问者试图访问一个在 网站 域中不存在的 URL,访问者将被重定向到“找不到文件”错误页面,并且 网站 映射可以用作该页面的“准”内容。
数据采集采集网站数据不难,但需要爬虫有足够的深度。我们创建了一个爬虫,它递归地遍历每个 网站 并且只采集那些 网站 页面上的数据。通常耗时的 网站采集 方法从顶层页面(通常是 网站 主页)开始,然后搜索页面上的所有链接,形成一个列表,然后去到采集到这些链接的页面,继续采集到每个页面的链接形成一个新列表,重复执行。显然,这是一个复杂性迅速增长的过程。每页添加 10 个链接,在 网站 上添加 5 个页面深度。如果采集 整个网站,则采集 页的总数为105,即100,000 页。因为很多网站的内部链接都是重复的,为了避免重复的采集,需要链接和去重。在 Python 中,最常用的去重方法是使用内置的集合采集方法。只有“新”链接是 采集。看一下代码示例: from urllib.request import urlopenfrom bs4 import BeautifulSoup import repages = set()def getLinks(pageurl):globalpageshtml= urlopen("" + pageurl)soup= BeautifulSoup(html)forlink in soup.findAll( "a", href=pile("^(/wiki/)")):if'href' in link.attrs:iflink.attrs['href'] not in pages:#这是一个新页面 newPage= 链接。属性[' @采集。看一下代码示例: from urllib.request import urlopenfrom bs4 import BeautifulSoup import repages = set()def getLinks(pageurl):globalpageshtml= urlopen("" + pageurl)soup= BeautifulSoup(html)forlink in soup.findAll( "a", href=pile("^(/wiki/)")):if'href' in link.attrs:iflink.attrs['href'] not in pages:#这是一个新页面 newPage= 链接。属性[' @采集。看一下代码示例: from urllib.request import urlopenfrom bs4 import BeautifulSoup import repages = set()def getLinks(pageurl):globalpageshtml= urlopen("" + pageurl)soup= BeautifulSoup(html)forlink in soup.findAll( "a", href=pile("^(/wiki/)")):if'href' in link.attrs:iflink.attrs['href'] not in pages:#这是一个新页面 newPage= 链接。属性['
递归警告:Python 的默认递归*为 1000 次,因为维基百科的链接太多,所以程序在达到递归*时停止。如果你不想让它停止,你可以设置一个递归计数器或其他东西。采集整个网站数据为了有效地使用爬虫,我们在使用爬虫时需要在页面上做一些事情。让我们创建一个爬虫来采集有关页面标题、正文第一段和编辑页面的链接(如果有的话)的信息。第一步,我们需要在网站上观察页面,然后制定采集模式,通过F12(一般情况下)检查元素,就可以看到页面的构成了。查看维基百科页面,包括入口和非入口页面,例如隐私政策页面,可以得出以下规则:所有标题都在h1→span标签中,页面上只有一个h1标签。所有正文都在 div#bodyContent 标记中。如果要获取第一段文字,可以使用div#mw-content-text→p。此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 并且页面上只有一个 h1 标签。所有正文都在 div#bodyContent 标记中。如果要获取第一段文字,可以使用div#mw-content-text→p。此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 并且页面上只有一个 h1 标签。所有正文都在 div#bodyContent 标记中。如果要获取第一段文字,可以使用div#mw-content-text→p。此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 所有正文都在 div#bodyContent 标记中。如果要获取第一段文字,可以使用div#mw-content-text→p。此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 所有正文都在 div#bodyContent 标记中。如果要获取第一段文字,可以使用div#mw-content-text→p。此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href' 此规则适用于除文件页面之外的所有页面。编辑链接仅出现在入口页面上。如果有编辑链接,则位于li#ca-edit标签的li#ca-edit→span→a中。调整前面的代码,我们可以构建一个爬虫和数据的组合程序采集,代码如下: import redef getLinks(pageUrl):global pageshtml = urlopen("" + pageUrl)soup = BeautifulSoup(html)尝试: print(soup.h1.get_text())print(soup.find(id="mw-content-text").findAll("p")[0])print(soup.find(id =" ca-edit").find("span").find("a").attrs['href'
<p>在数据存储到 MySQL 之前,数据已经被获取。直接打印出来比较麻烦,所以我们可以直接存入MySQL。这里只存储链接是没有意义的,所以我们存储页面的标题和内容。我之前有两篇文章 文章 介绍了如何在 MySQL 中存储数据。数据表为pages,代码如下: import reimport datetimeimport randomimport pymysqlconn = pymysql.connect(host = '127.< @0.