[英]Using selenium to loop through links and get page sources
我正在嘗試使用以下鏈接抓取兩個網頁:
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
我想在鏈接中提取有關每個房屋的信息。 我使用硒,而不是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.