【问题标题】:Part of HTML instead of full using Soup/Selenium使用 Soup/Selenium 的 HTML 的一部分而不是完整的
【发布时间】:2018-12-28 21:59:52
【问题描述】:

我一直在努力解决以下问题:

我正在尝试检索 certain page 的完整 HTML。我已经设法抓取了其他一些网站,但这个网站就是不合作。

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
##########################################

url = "https://fd.nl/laatste-nieuws"

driver = webdriver.Firefox()
driver.get(url)

html = driver.page_source

page_soup1 = soup(html, "html5lib")

page_soup1

输出只是 HTML 的一部分。当我通过 Chrome 检查页面时,会有更多元素。

我尝试过仅将 Soup 与多个解析器(html.parser、html5lib 和 lxml)一起使用,以及在 Soup 之前使用 Selenium,但均无济于事。

我对这一切都很陌生,所以欢迎任何提示/指南!

干杯!

【问题讨论】:

    标签: selenium web-scraping beautifulsoup


    【解决方案1】:

    似乎该站点正在使用“cookiewall”,只需将标题中的“Cookie”设置为“cookieconsent=true”,它应该可以工作:

    from bs4 import BeautifulSoup
    import requests
    
    headers = {"Host":"fd.nl",
    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Encoding":"gzip,deflate,br",
    "Cookie": "cookieconsent=true",
    "User-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"}
    
    url = "https://fd.nl/laatste-nieuws"
    page = requests.get(url, headers=headers)
    soup = BeautifulSoup(page.text, 'lxml')
    
    for h1, p in zip(soup.select('h1'), soup.select('h1 ~ p')):
        print(h1.text)
        print(p.text)
        print('-' * 80)
    

    打印:

    Hogere omzet voor Nederlandse zuivelgroep A-ware
    Familiebedrijf A-ware bouwt mozzarellafabriek in Heerenveen 
    --------------------------------------------------------------------------------
    Via negentig procedures van amorfe betonkolos tot hotel met welnesscentrum
    Ook fabrieken hebben een levensduur. Niet zelden staan de gebouwen er nog, maar is de oorspronkelijke functie verdwenen. Soms krijgen ze een nieuwe bestemming. In dit eerste deel over industrieel erfgoed: meelfabriek De Sleutels in Leiden.
    --------------------------------------------------------------------------------
    Egyptische miljardair en oprichter Fortress Investment Group kopen voetbalclub Aston Villa
    Nieuwe eigenaren Nassef Sawiris en Wes Edens hopen met hun investering Aston Villa wel snel weer op het hoogste niveau te krijgen.
    --------------------------------------------------------------------------------
    Greet Prins struint door Marrakesh
    Een ideale agenda zonder beperkingen van tijd, afstand of geld. Deze week in de rubriek Droomweekend:  Greet Prins, voorzitter van de raad van bestuur van Philadelphia Zorg.
    --------------------------------------------------------------------------------
    Trump drukt op de beurs, Wall Street licht lager
    Koersen op Wall Street dalen nadat Amerikaanse president heeft gezegd 'klaar te zijn om tot 500' mrd aan importheffingen te gaan.
    --------------------------------------------------------------------------------
    
    ...and so on
    

    【讨论】:

    • 这就像一个魅力!非常感谢!将来我应该注意以下内容:“
    • @BaHa 是的,类似这些 - 但请注意,每个站点可以以不同的方式实现它(例如,不同的 cookie 名称......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多