无法从定位标记获取“ href”

时间:2019-01-09 06:50:13

标签: web-scraping beautifulsoup python-requests

通过检查页面上的元素,我可以正确看到锚标记的链接,例如Image for that,但是当我尝试通过汤获取它时,结果为Image of output (soup)。我尝试了lxml和html5lib,但找不到任何解决方案。

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我正在抓取的html页面的某些部分未正确加载。我最终通过Selenium使用PhantomJS进行了抓取。这是example。还有另一个one

还有dryscape,我从未使用过,但是可以解决问题。

答案 1 :(得分:0)

我可以通过在标题中指定User-Agent来获取href。网站可能被设计为对各种浏览器做出不同的响应。最好使用类似于您用来检查页面的浏览器的User-Agent。

import requests
from bs4 import BeautifulSoup
url='https://co.jim-hogg.tx.us/index.php/bids/278-solid-waste-resedential-collection-disposal-bids'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(url, headers=headers)
soup=BeautifulSoup(r.text,'html.parser')
print(soup.find("div",{"itemprop":"articleBody"}).a['href'])

输出

http://www.jimhoggcounty.net/files/BIDS/Notice%20for%20bids%20on%20Solid%20Waste%20Residential%20%26%20CommercialCollection.pdf

注意:
我所在的地区被该网站阻止,因此我必须使用代理才能获得响应。我已经删除了其他代码。