Python requests.get无法在res.text中找到<!--beginject--><!--endinject-->

Python requests.get无法在res.text中找到这两个标签内的内容,网站的源代码里是有内容的。
请问有人知道这个怎么解决吗?

如果要解析的是一个注释文本内容,可用bs4的Comment解析,示例:

from bs4 import BeautifulSoup as BS
from bs4 import Comment
....
soup = BS(html, 'html.parser')
comments = soup.find_all(string=lambda text: isinstance(text, Comment))
for c in comments:
    print(c)
    print("===========")
    c.extract()

如果是动态加载的,用requests.get是获取不到的,要么用selenium,要么找到数据加载的链接,然后带请求参数去请求。

你检查下这个网页中的内容是不是通过js代码读取外部json数据来动态更新的。
requests只能获取网页的静态源代码,动态更新的内容取不到。
对于动态更新的内容要用selenium 来爬取。

或者是通过F12控制台分析页面数据加载的链接,找到真正json数据的地址进行爬取。

在页面上点击右键,右键菜单中选 "查看网页源代码"。

img


这样看到的才是网页的静态源代码。
如果这个网页的静态源代码中有你需要爬取的内容,就说明该页面没有动态内容,可以用requests爬取。
否则就说明该页面的内容是动态更新的,要用selenium 来爬取.


如果这个网页的静态源代码中有你需要爬取的内容,res.text中却没有,可能是requests伪造的头部信息不全。
要在headers中添加抓包时的请求头求参数

headers={
    'User-Agent': 'xxxxxxxxxxx',
    'Host' : 'xxxxxxxxxxx',
    'Origin' : 'xxxxxxxxxxxxx',
    'Referer' : 'xxxxxxxxxxxxxx',
    'Cookie': 'xxxxxxxxxxxxxxxx'
}

其中请求头的参数 'User-Agent','Host','Origin', 'Referer','Cookie'可以在浏览器的f12控制台的Network中看到

img