爬虫抓取网页数据( Python模拟浏览器发起请求并解析内容代码:正则的好处)

优采云 发布时间: 2021-10-01 09:10

  爬虫抓取网页数据(

Python模拟浏览器发起请求并解析内容代码:正则的好处)

  

  用 Python 编写爬虫工具现在已经司空见惯。每个人都希望能够编写一个程序来获取互联网上的一些信息进行数据分析或其他事情。

  我们知道爬虫的原理无非就是把目标URL的内容下载下来保存在内存中。这时候它的内容其实就是一堆HTML,然后根据自己的想法解析HTML内容,提取出想要的数据。,所以今天我们主要讲四种在Python中解析网页HTML内容的方法,各有千秋,适用于不同的场合。

  首先,我们随机找了一个网站,然后豆瓣网站闪过我的脑海。好吧,网站毕竟是用Python构建的,所以我们用它作为演示。

  我们找到了豆瓣的Python爬虫群主页,如下图。

  

  让我们使用浏览器开发人员工具查看 HTML 代码并找到所需的内容。我们想要获取讨论组中的所有帖子标题和链接。

  

  通过分析,我们发现其实我们想要的内容就在整个HTML代码的这个区域,那么我们只需要想办法把这个区域的内容取出来就差不多了。

  现在开始编写代码。

  1:正则表达式

  正则表达式通常用于检索和替换符合某种模式的文本,因此我们可以利用这个原理来提取我们想要的信息。

  参考以下代码。

  

  代码第6、7行,需要手动指定header的内容,假装这个请求是浏览器请求。否则,豆瓣会将我们的请求视为正常请求并返回 HTTP 418 错误。

  在第 7 行中,我们直接使用 requests 库的 get 方法发出请求。获取到内容后,我们需要进行编码格式转换。这也是豆瓣页面渲染机制的问题。一般情况下,可以直接获取requests内容的内容。.

  Python模拟浏览器发起请求并解析内容代码:

  url = 'https://www.douban.com/group/491607/'

headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0"}

response = requests.get(url=url,headers=headers).content.decode('utf-8')

  正则化的优点是写起来麻烦,不容易理解,但是匹配效率很高。但是,在如今现成的HTMl内容解析库太多之后,我个人不建议使用正则化来手动匹配内容,费时费力。.

  主要分析代码:

<p>re_div = r&#39;[\W|\w]+&#39;

pattern = re.compile(re_div)

content = re.findall(pattern, str(response))

re_link = r&#39;<a .*?>(.*?)</a>&#39;

mm = re.findall(re_link, str(content), re.S|re.M)

urls=re.findall(r"

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线