如何模拟请求和如何解析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的使用率以及爬网速度。编写采集器时,请记住,如果没有必要,请勿模拟浏览器环境。