簡體   English   中英

使用硒循環鏈接並獲取頁面源

[英]Using selenium to loop through links and get page sources

我正在嘗試使用以下鏈接抓取兩個網頁:

https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-holstebro/id-5792074https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-odense-m/ id-5769482

我想在鏈接中提取有關每個房屋的信息。 我使用硒,而不是beautifulsoup,因為頁面是動態的,beautifulsoup不會檢索所有HTML代碼。 我使用下面的代碼來實現這一目標。

page_links=['https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-holstebro/id-5792074',
'https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-odense-m/id-5769482']

def render_page(url):
    driver = webdriver.Firefox()
    driver.get(url)
    time.sleep(3)
    r = driver.page_source
    driver.quit()
    return(r)

def remove_html_tags(text):
    clean = re.compile('<.*?>')
    return(re.sub(clean, '', text))

houses_html_code = []
housing_data = []
address = []

# Loop through main pages, render them and extract code
for i in page_links: 
    html = render_page(str(i))
    soup = BeautifulSoup(html, "html.parser")
    houses_html_code.append(soup)

for i in houses_html_code:
    for span_1 in soup.findAll('span', {"class": "AdFeatures__item-value"}):
    housing_data.append(remove_html_tags(str(span_1)))

因此,我總結一下,我渲染頁面,獲取頁面源,將頁面源附加到列表中,並在兩個渲染頁面的頁面源中搜索span類。

但是,我的代碼返回了第一個鏈接的頁面源,TWICE實際上忽略了第二個頁面的鏈接,即使它渲染了每個頁面(firefox隨每個頁面彈出)。 請參見下面的輸出。

為什么這不起作用? 抱歉,答案很明顯。 我對Python相當陌生,這是我第一次使用硒

['Lejlighed',
'82 m²',
'2',
'5. sal',
'Nej',
'Ja',
'Nej',
'-',
'Ubegrænset',
'Snarest',
'8.542,-',
'-',
'25.626,-',
'-',
'34.168,-',
'24/08-2018',
'3775136',
'Lejlighed',
'82 m²',
'2',
'5. sal',
'Nej',
'Ja',
'Nej',
'-',
'Ubegrænset',
'Snarest',
'8.542,-',
'-',
'25.626,-',
'-',
'34.168,-',
'24/08-2018',
'3775136']

您有一個拼寫錯誤更改:

for span_1 in soup.findAll('span', {"class": "AdFeatures__item-value"}):

for span_1 in i.findAll('span', {"class": "AdFeatures__item-value"}):

但是,為什么要為每個頁面創建一個新的webdriver? 為什么不做這樣的事情:

page_links=['https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-holstebro/id-5792074', 'https://www.boligportal.dk/lejebolig/dp/2-vaerelses-lejlighed-odense-m/id-5769482']
driver = webdriver.Firefox()

def render_page(url):
    driver.get(url)
    ...

...
for i in houses_html_code:
    for span_1 in i.findAll('span', {"class": "AdFeatures__item-value"}):
         housing_data.append(remove_html_tags(str(span_1)))

driver.quit()

輸出:

['Lejlighed', '78 m²', '2', '2. sal', 'Nej', 'Nej', 'Nej', '-', 'Ubegrænset', 'Snarest', '5.300,-', '800,-', '15.900,-', '0,-', '22.000,-', '27/10-2018', '3864958', 'Lejlighed', '82 m²', '2', '5. sal', 'Nej', 'Ja', 'Nej', '-', 'Ubegrænset', 'Snarest', '8.542,-', '-', '25.626,-', '-', '34.168,-', '24/08-2018', '3775136']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM