nodejs抓取动态网页(爬虫并没有固定的形式,必须对具体网页作具体写法)

优采云 发布时间: 2021-10-02 11:22

  nodejs抓取动态网页(爬虫并没有固定的形式,必须对具体网页作具体写法)

  爬虫没有固定的形式,必须专门为特定的网页编写。

  我们以腾讯新闻()为例。

  -------------------------------------------------- -------------------------------------------------- ----------------

  如果我们想抓取*敏*感*词*框中的标题怎么办?(以谷歌浏览器为例)

  首先,在浏览器中,右击-->检查。我们看到下图右侧的方框:

  右边的代码你看不懂也没关系。当我们将鼠标放在上图中的红色方框中时,可以看到网页中有些地方会变成蓝色,而变成蓝色的地方就是鼠标点击的代码控制的地方。所以,我们点击代码最左边的图标来展开代码:

  代码展开后,看起来有点吓人,其实还好。我们用鼠标从顶部向下滑动代码,但是当鼠标指向红色框的那一行时,可以看到我们需要提取的文章标题(必填部分)收录在蓝色中区域。于是我们展开右边红框中的代码....重复这一步直到:

  直到我们需要的收录在蓝色区域中,如上图所示。(这样做的原因是我们需要了解我们需要提取的部分在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

  影响:

  控制台打印信息:

  从文件夹中抓取的图像:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线