当前位置:   article > 正文

网页爬虫:爬取百度咨询新闻_咨询抓取

咨询抓取

1.获取网页源码

工具:

import urllib.request
  • 1

urllib.request库可以模拟浏览器发送网页请求并获取request的结果。
以科技类新闻为例,拟爬取这样一篇文章。
在这里插入图片描述

首先,发送请求

html = "https://baijiahao.baidu.com/s?id=1654779534169792316&wfr=spider&for=pc"
request = urllib.request.Request(html)
  • 1
  • 2

写入获取到的网页,并转化成python可读的字符

response = urllib.request.urlopen(request)  # 获取网页
html_page = response.read().decode("utf-8")  # 按utf-8格式读取,存入html_page
  • 1
  • 2

输出看看:

在这里插入图片描述
结果显示,python已经爬取了网页全部信息, 接下来就是数据清洗部分了。

弄清楚过程后,将上面代码合并成精简形式:

response = urllib.request.urlopen("https://baijiahao.baidu.com/s?id=1654779534169792316&wfr=spider&for=pc")  # 获取网页
html_page = response.read().decode("utf-8")  # 按utf-8格式读取,存入html_page
  • 1
  • 2

2 清洗

2.1提取正文

上面抓取的网页显示混乱,利用BeautifulSoup库,先将上述网页转化成标准形式输出。

from bs4 import BeautifulSoup
  • 1
soup = BeautifulSoup(html_page)
print(soup.prettify())
  • 1
  • 2

在这里插入图片描述

观察发现,我们想提取的文本都在之间,只要提取这部分就可以。

尝试用正则匹配:

result_pattern=r'<span class="bjh-p">(.*)</span>'
result_match=re.findall(result_pattern,html_page)
print(result_match)
  • 1
  • 2
  • 3

在这里插入图片描述
发现还是有很多标签和超链接没有去掉。

我们想要获取的是正文body部分,观察beautifulsoup的prettify()标准输出:

在这里插入图片描述

发现正文部分有其专属id:“article”,正文中包含了文章和图片,用beautiful提取正文:

div = soup.find(id="article")
print(div.text)
  • 1
  • 2

在这里插入图片描述
全部正文内容提取完毕。

2.2 提取标题

虽然正文首行包含了标题内容,但并不是真正意义的标题,只是正文文本重复了标题内容。为了格式的完整,继续提取标题:

title = soup.title.string
print(title)
  • 1
  • 2

在这里插入图片描述
至此,标题+正文提取完毕。

3 写出新文件

创建txt文件,命名为文章标题

filename = title+'.txt'
  • 1

写入标题和正文:

with open(filename,'w',encoding='utf-8') as f:
    f.write(title)
    f.write(div.text)
f.close()
  • 1
  • 2
  • 3
  • 4

可以看到python已经生成了我们抓取的文章。
在这里插入图片描述
查看写入的文件:

with open(filename,'r',encoding='utf-8') as f:
    line = f.readlines()
    print(line)
  • 1
  • 2
  • 3

在这里插入图片描述

4.测试

用写好的爬虫工具爬取文艺类,体育类文本:
在这里插入图片描述
在这里插入图片描述
爬虫工具实践成功。

总结

不同网站的源码类型不同,百度咨询的源码较为混乱不好读,可以用BeautifulSoup.prettify()转化成标准格式,获取网页全部内容后再进行清洗。beautifulsoup工具提供的文本清洗功能比正则匹配更简单好用,只要找到要提取部分对应的唯一id即可。百度咨询的正文id为“article",不同网站的id可能不同。
本文清洗后的文章格式如下:
在这里插入图片描述
在这里插入图片描述
标题和正文各占一行,如果需要提取分段的正文,需要继续添加readlines()工具。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/396537
推荐阅读
相关标签
  

闽ICP备14008679号