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

时间:2019-03-15 00:39:57

标签: python beautifulsoup screen-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")

当我在浏览器中输入url时,我将被定向到一个页面,该页面包含AccessWorldNews网站上2005年1月1日的关键字“ drone”的搜索结果。我感兴趣的元素是返回的结果数-在这种情况下为2,可以通过''div',class _ =“ search-hits__meta--total_hits”'进行隔离。

但是,beautifulsoup找到我的Web内容与我从浏览器中看到的完全不同。查看文本,它似乎是一个中间网页,用户在其中输入用户名和密码,但有趣的是,对我而言,我甚至不必输入任何用户名和密码即可访问上面的URL。

我很想学习如何告诉beautifulsoup转到与将URL放入浏览器时看到的页面相同的页面。任何帮助深表感谢!

1 个答案:

答案 0 :(得分:1)

您提供的URL会加载任何外部访问者的用户登录页面。因此BeautifulSoup(BS)也会为您提供该页面的html。要获取在登录后找到的搜索结果,您需要首先登录该页面,然后在该页面中使用BS分析器。但是BS不支持登录。而是使用selenium来实现浏览器自动化,通过selenium执行登录,并获取已登录页面的html。请参考硒中的get_attribute()。