Через элемент inspect на веб-странице я могу правильно видеть ссылку для тега привязки, например, , но когда я пытаюсь получить его с помощью супа, он дает мне результат как . Я пробовал lxml и html5lib, но не смог найти никакого решения.
Мне удалось получить href, указав User-Agent в заголовках. Сайт может быть спроектирован так, чтобы давать разные ответы различным браузерам. Лучше использовать 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
Примечание: Мой регион был заблокирован сайтом, поэтому мне пришлось использовать прокси для получения ответа. Я удалил этот дополнительный код.
У меня была похожая проблема, некоторые фрагменты html-страницы, которые я просматривал, были загружены неправильно. Я закончил соскоб с PhantomJS через Selenium. Вот пример . И еще один .
Есть также dryscape , который я никогда не использовал, но мог бы добиться цели.