Python BeautifulSoup返回的网页与我看到的网页不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python BeautifulSoup返回的网页与我看到的网页不同相关的知识,希望对你有一定的参考价值。

如果这是一个愚蠢的问题,我对web scraping或python都很新,所以请提前道歉。

url=https://infoweb.newsbank.com/apps/news/results?sort=YMD_date%3AD&p=AWNB&t=&maxresults=20&f=advanced&b=results&val-base-0=January%201%2C%202005&fld-base-0=YMD_date&bln-base-1=and&val-base-1=drone%2C%20unmanned%20aerial%20vehicle%2C%20UAV&fld-base-1=alltext
page = requests.get(url, allow_redirects=True)
allcont = BeautifulSoup(page.text, 'html.parser')
allcont.find_all('div',class_="search-hits__meta--total_hits")

当我在浏览器中输入网址时,我会在2005年1月1日的AccessWorldNews网站上找到关键字“无人机”的搜索结果页面。我感兴趣的元素是返回的结果数 - 在这种情况下它是2,可以通过`'div'隔离,类_ =“search-hits__meta - total_hits”'。

然而,beautifulsoup找到我的网页内容与我从浏览器中看到的完全不同。看看文本,它似乎是一个用户输入用户名和密码的中间网页,但有趣的是,在我看来,我没有必要输入任何用户名和密码来访问上面的网址。

我很想知道如何告诉beautifulsoup去我在将url放入浏览器时看到的页面。任何帮助都非常感谢!

答案

您提供的URL会加载任何外部访问者的用户登录页面。所以BeautifulSoup(BS)也会为你提供该页面的html。要获取登录后找到的搜索结果,您需要先登录该页面,然后在该页面中使用BS解析器。但BS不支持登录。相反,使用selenium进行浏览器自动化,通过selenium执行登录,并获取登录页面的html。请参阅selenium中的get_attribute()。

以上是关于Python BeautifulSoup返回的网页与我看到的网页不同的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫初探 - selenium+beautifulsoup4+chromedriver爬取需要登录的网页信息

Python_爬虫_BeautifulSoup网页解析库

Python使用BeautifulSoup爬取网页信息

python爬虫--解析网页几种方法之BeautifulSoup

Python3.x:BeautifulSoup()解析网页内容出现乱码

网页上可以看到评论,但是 BeautifulSoup 返回的 html 对象不包含评论部分