如何模拟请求和如何解析HTML源码中的链接和标题

优采云 发布时间: 2021-05-18 18:20

  如何模拟请求和如何解析HTML源码中的链接和标题

  尽管这是很久以前的事,但该主题似乎已经解决了这个问题。但是查看许多答案的方法有点繁琐,这是一种更有效且消耗更少资源的方法。由于主题未指定所需内容,因此此处的示例采用首页上所有帖子的链接和标题。

  首先,请记住,浏览器环境非常消耗内存和CPU,应尽可能避免使用模仿浏览器环境的采集器代码。请记住,对于某些前端呈现的网页,尽管我们所需的数据无法在HTML源代码中看到,但它更有可能通过另一个请求获得纯数据(最有可能采用JSON格式)。我们不仅不需要模拟浏览器,而且可以节省解析HTML的时间。

  然后,我打开了北京邮电论坛的主页,发现该主页的HTML源代码不收录页面上显示的文章内容。然后,这很可能是通过JS异步加载到页面的。通过浏览器开发工具(OS X下的Chrome浏览器通过Command + option + i或Win / Linux通过F1 2)进行分析,该请求在加载主页时很容易找到,如下面的屏幕快照中所示:

  

  

  在屏幕快照中选择的请求的响应是主页上的文章链接,并且可以在预览选项中看到渲染的预览图像:

  

  

  到目前为止,我们确信此链接可以获取文章和主页上的链接。

  在标头选项中,有此请求的请求标头和请求参数。我们可以通过Python模拟此请求以获得相同的响应。与BeautifulSoup之类的库一起解析HTML,您可以获得相应的内容。

  有关如何模拟请求以及如何解析HTML,请移至我的专栏。这里有详细的介绍,所以我在这里不再重复。

  通过这种方式,无需模拟浏览器环境即可捕获数据,从而大大提高了内存和CPU的使用率以及爬网速度。编写采集器时,请记住,如果没有必要,请勿模拟浏览器环境。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线