c爬虫抓取网页数据(利用网络爬虫获取简单信息的基本步骤(1)_光明网(图))

优采云 发布时间: 2021-09-27 12:13

  c爬虫抓取网页数据(利用网络爬虫获取简单信息的基本步骤(1)_光明网(图))

  使用网络爬虫获取简单信息的基本步骤是:提取网页源代码->过滤内容->保存内容

  一、提取web源代码

  获取web源代码的方法有很多。常用的库有:urllib库、请求库等。。。特定例程可以访问我以前的文件:

  二、过滤器内容

  在我之前的文章中使用的过滤方法是通过正则表达式,但正则表达式的编写过程复杂且容易出错。在本文章中,我替换的方法主要是使用库替换正则表达式

  ① 使用XPath

  ② 用漂亮的汤

  ③ 使用pyquery

  这三个库的具体介绍和使用教程可以阅读由崔庆才撰写的Python 3 web crawler开发实践(书籍下载链接附在本文末尾)。以美丽的汤库为例,我实际上是在抓取web内容

  目标:在网页上登上短篇小说的副标题和作者文章

  环境:Python3.65 pycharm软件

  想法:提取网页的源代码->过滤源代码->输出结果(保留文件)

  首先,让我们来看看建树网页的源代码:

  

//upload-images.jianshu.io/upload_images/2729710-fbb42957dc006ab2.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120

优秀的女人,喜欢坚持这些习惯

<p class="abstract">

题记:要做这样的女子:面若桃花、心深似海、冷暖自知、真诚善良、触觉敏锐、情感丰富、坚忍独立、缱绻决绝。坚持读书、写字、听歌、旅行、上网、摄影,有...

悦读时刻

39

236

</p>

  通过查看上述源代码,您将发现有许多节点。源代码的父节点是Li,并且有许多子节点。我们需要观察的是子节点A。美容汤库通过网页中的节点过滤不同的内容

  要使用Beauty soup库,必须首先导入库:从BS4导入Beauty soup,然后初始化库并选择解析器:

  Soup=beautifulsup(get#u HTML(&#39;#39;,&#39;lxml&#39;),方法beautifulsup()中的第一个参数是网页源代码,第二个参数是使用的解析器类型。这里使用lxml解析器。其次,find#all()方法搜索父节点和子节点:查找soup.find#all(name=&#39;Li&#39;),最后输出文本:Print(a.string)。具体实施代码如下:

  #初始化BeautifulSoup库,并设置解析器

soup = BeautifulSoup(get_html(&#39;https://www.jianshu.com/&#39;), &#39;lxml&#39;)

print(get_html(&#39;https://www.jianshu.com/&#39;))

for li in soup.find_all(name=&#39;li&#39;): #遍历父节点

for a in li.find_all(name=&#39;a&#39;): #遍历子节点

print(a.string) #输出结果

  随附完整代码(仅供参考):

  import requests

import re

from bs4 import BeautifulSoup

def get_html(url):

headers = {

&#39;User-Agent&#39;:&#39;Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\

AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36&#39;

} #模拟浏览器访问

response = requests.get(url,headers = headers) #请求访问网站

html = response.text #获取网页源码

return html #返回网页源码

soup = BeautifulSoup(get_html(&#39;https://www.jianshu.com/&#39;), &#39;lxml&#39;) #初始化BeautifulSoup库,并设置解析器

print(get_html(&#39;https://www.jianshu.com/&#39;))

for li in soup.find_all(name=&#39;li&#39;): #遍历父节点

for a in li.find_all(name=&#39;a&#39;): #遍历子节点

if a.string==None:

pass

else:

print(a.string) #输出结果

  Python3网络爬虫开发实践PDF文件链接:链接:提取代码:asd6

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线