nodejs抓取动态网页(爬虫并没有固定的形式,必须对具体网页作具体写法)
优采云 发布时间: 2021-10-02 11:22nodejs抓取动态网页(爬虫并没有固定的形式,必须对具体网页作具体写法)
爬虫没有固定的形式,必须专门为特定的网页编写。
我们以腾讯新闻()为例。
-------------------------------------------------- -------------------------------------------------- ----------------
如果我们想抓取*敏*感*词*框中的标题怎么办?(以谷歌浏览器为例)
首先,在浏览器中,右击-->检查。我们看到下图右侧的方框:
右边的代码你看不懂也没关系。当我们将鼠标放在上图中的红色方框中时,可以看到网页中有些地方会变成蓝色,而变成蓝色的地方就是鼠标点击的代码控制的地方。所以,我们点击代码最左边的图标来展开代码:
代码展开后,看起来有点吓人,其实还好。我们用鼠标从顶部向下滑动代码,但是当鼠标指向红色框的那一行时,可以看到我们需要提取的文章标题(必填部分)收录在蓝色中区域。于是我们展开右边红框中的代码....重复这一步直到:
直到我们需要的收录在蓝色区域中,如上图所示。(这样做的原因是我们需要了解我们需要提取的部分在html中是如何描述的)
在我们继续扩展之后:
终于看到页面的标题文章和html代码中文章的链接(红框href后面的链接就是链接)!是的,这就是我们要提取的内容。
从上图可以看出,我们需要的东西都收录在标签中的class="linkto"中。
(一般来说,只要是同类型的东西,比如网页中每个文章的标题,html中的描述方法都是一样的)所以我们就可以写代码了。
-------------------------------------------------- -------------------------------------------------- -----------------
在写代码之前,先简单介绍一下代码中好用的库。(请求和beautifulsoup4)。
前者用于向网页发送请求并提取网页的html。后者用于过滤html,提取有用信息。
-------------------------------------------------- -------------------------------------------------- -----------------
代码:
从 bs4 导入请求 import BeautifulSoup # Beautiful
Soup 是一个 Python 库,可以从 HTML 或 XML 文件中提取结构化数据#要抓取的网页 url = "" #
构建头文件模拟浏览器访问,否则访问单个网页时会出现403错误。您可以只复制标题之一。我的第一个爬虫文章 如何获取headers
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
#使用requests库中的gete方法向网页发送请求 page = requests.get(url) #Get html html=page.text
#print(html) # 将获取到的内容转换为BeautifulSoup格式,并使用html.parser作为解析器soup =
BeautifulSoup(html,'html.parser') #
在html中的a标签中查找所有class='linkto'的句子,将找到的内容返回给变量titles titles = soup.find_all('a',
'linkto') # open()是一个读写文件的函数,with语句会自动close()打开的文件 with open(r"D:\aaa.txt",
"w",encoding='utf-8') as file: # 在 D 盘中打开/创建一个名为 aaa 的 txt 文件作为 titles 中的 title:
#遍历titles中的每个元素 file.write(title.string+'\n') #将title字符串(即文章的title)写入文件,并换行
file.write(title.get('href') +'\n\n') #将文章的链接写入文件并包裹两次
效果:在D盘打开aaa.txt
可以抓取网页的文章标题和链接
接下来是抓取单个网页图片:
取#0l
比如main方法如上,一步一步从html中寻找你要爬取的信息。
代码显示如下:
导入请求从 urllib 导入请求从 bs4 导入导入
BeautifulSoup # Beautiful Soup 是一个 Python 库,可以从 HTML 或 XML 文件中提取结构化数据#要抓取的网页 url =
""#
构建头文件模拟浏览器访问,否则访问单个网页时会出现403错误。您可以只复制标题之一。我的第一个爬虫文章 如何获取headers
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
#使用requests库中的gete方法向网页发送请求 page = requests.get(url) #Get html html=page.text
#print(html) # 将获取到的内容转换为BeautifulSoup格式,并使用html.parser作为解析器soup =
BeautifulSoup(html,'html.parser') #
查找html中class='BDE_Image'以及src中内容以“.jpg”结尾的所有img标签,找到的内容返回给变量links中的links
= soup.find_all('img','BDE_Image',src=pile(r'.jpg$')) #src的内容一般是一个图片的链接#
open()是一个读写文件的函数,with语句会自动close()打开的文件path=r'D:\images' n=0 for link in links:
print(link.attrs['src']) #打印图片的链接
request.urlretrieve(link.attrs['src'],path+'\%s.jpg' %n) #urlretrieve 下载到本地 n+=1
影响:
控制台打印信息:
从文件夹中抓取的图像: