我正在尝试使用以下链接抓取两个网页:
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']
答案 0 :(得分:0)
您有错字:
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']