教程:Python网络爬虫如何开始采集
优采云 发布时间: 2022-11-30 11:18教程:Python网络爬虫如何开始采集
网络爬虫是一种循序渐进的方法,通过获取网页内容,检查页面内容,找到URL链接,然后找到下一个URL,进而获取该URL对应的网页内容,而这过程不断循环。
迭代单个域名
以爬维基百科的Kevin Baco为例,实现简单的数据爬取。代码如下:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')
bs = BeautifulSoup(html, 'html.parser')
for link in bs.find_all('a'):
if 'href' in link.attrs:
print(link.attrs['href'])
上面的代码获取维基百科网站上的任何页面并提取页面链接。删除我们不需要的条目,进行改进并获取指向条目的链接。代码如下:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
html = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon')
bs = BeautifulSoup(html, 'html.parser')
for link in bs.find('div', {'id':'bodyContent'}).find_all(
'a', href=re.compile('^(/wiki/)((?!:).)*$')):
if 'href' in link.attrs:
print(link.attrs['href'])
如果我们要做一个函数getLinks,我们可以使用维基百科词条/wiki/形式的URL链接作为参数,然后以相同的形式返回一个列表,其中收录
词条的所有URL链接。一个调用getLinks的main函数,以一个起始入口为参数,然后从返回的URL列表中随机选择一个入口链接,然后调用getLinks,直到我们主动停止,或者新页面上没有入口链接,程序停止运行.
改进后的代码如下:
from urllib.request import urlopen
<p>
" />
from bs4 import BeautifulSoup
import datetime
import random
import re
random.seed(datetime.datetime.now())
def getLinks(articleUrl):
html = urlopen('http://en.wikipedia.org{}'.format(articleUrl))
bs = BeautifulSoup(html, 'html.parser')
return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))
links = getLinks('/wiki/Kevin_Bacon')
while len(links) > 0:
newArticle = links[random.randint(0, len(links)-1)].attrs['href']
print(newArticle)
links = getLinks(newArticle)
</p>
遍历整个网络
采集
整个网站是一个非常消耗内存的过程,尤其是在处理大型网站时,最合适的工具是使用数据库来存储采集
的资源。
数据遍历全网的好处:可以制作站点地图,采集站点数据等。但是一般不会消耗大量的内存资源进行采集,所以这一段意义不大。
通过互联网采集
构建网页地图,需要从一个链接跳转到另一个链接,逐步构建网站的地图信息,从而达到合适的站点地图。同时,我们也不能忽视外部链接,从一个链接跳转到另一个链接。场景也时有发生。与以往的单一域名采集相比,互联网采集的难度要高很多。因此,要求我们在搜索信息的方式和采集
信息的方式上要极其灵活,以达到理想的采集
效果。
在做数据采集之前,最好能够确定自己采集的内容,明确目标,然后根据目标的展示形式进行分析,网站是否会跳转到其他链接,是否继续采集和其他因素。
如果你采集
了一个网站,有时候你也会考虑到网络重定向的问题。比如我个人博客的原链接是:,但是我做了一个网络重定向,我会重定向到原链接,这样不管是访问哪个链接的本质都是跳转到原链接。这个时候我们需要明白的是,当网络发生重定向时,我们采集
到的URL地址会发生变化。在Python3.X的版本中,我们的urllib会帮我完成。重定向功能。
用 Scrapy 采集
Scrapy是一个Python库,可以大大降低我们搜索和识别网页链接的复杂度。它使您可以轻松地采集
有关一个或多个域名的信息。
爬虫项目使用Scrapy还有一些设置。我们可以从官网下载,也可以用pip安装。检查安装的方法在Python基础系列之前的文章中有提到。这里不做过多阐述。
" />
创建一个项目:
➜ python scrapy startproject demourl
New Scrapy project 'demourl', using template directory '/usr/local/lib/python3.6/site-packages/scrapy/templates/project', created in:
/Users/demo/Project/python/demourl
You can start your first spider with:
cd demourl
scrapy genspider example example.com
我们看一下目录结构:
➜ demourl tree ./
./
├── [drwxr-xr-x] demourl
│ ├── [-rw-r--r--] __init__.py
│ ├── [drwxr-xr-x] __pycache__
│ ├── [-rw-r--r--] items.py
│ ├── [-rw-r--r--] middlewares.py
│ ├── [-rw-r--r--] pipelines.py
│ ├── [-rw-r--r--] settings.py
│ └── [drwxr-xr-x] spiders
│ ├── [-rw-r--r--] __init__.py
│ └── [drwxr-xr-x] __pycache__
└── [-rw-r--r--] scrapy.cfg
4 directories, 7 files
我们将一一介绍Scrapy的内容。您可以点击关注,及时收到后续更新。
最新版本:织梦dedecms采集侠V2.9采集插件
从Test Play Station下载,只需发布它,它是Dream Collector 2.9的最新版本。已授权。
覆盖破解的文件(共三个文件:彩集侠、收录
和插件)。
" />
插件:直接覆盖网站的根目录
包括:直接覆盖到网站的根目录
菜机侠:网站默认后端是 dede,如果你没有修改后台目录就是覆盖下面的 /dede/apps/,如果后台访问路径已经修改,那么将 dede 替换为你修改的名称。示例:如果 dede 已更改为测试,则覆盖 /test/apps/ 目录
" />
您好,此帖子收录
特定内容,请回复并再次查看。
标签 织梦
CMS