2016-12-27 40 views
1

我试图从网站(www.hotpads.com)刮一些财产信息。Python,BeautifulZoup,Selenium webscrape

我正在加载一个包含多个列表的网址(例如link),并尝试进入每个属性并获取更多详细信息以下载到Excel中。

如果我'检查'的元素,我可以看到一旦页面加载后,href链接被识别为'Linker'类,但是如果我使用Selenium加载页面,请确保它已加载,然后搜索这些链接不存在。

我在做什么错?你能给我一个指导如何去做这件事。请注意,我正在等待页面被加载。如果我右键点击并查看链接,我可以看到我后来的内容,但是如果我查看页面源,则链接不存在。

在获取和访问各个环节而言,这是我的代码:

driver.get(url) 
time.sleep(10) 

response = requests.get(url) 
html = response.content 

soup = bs4.BeautifulSoup(html, "html.parser") 

data = soup.findAll('a', attrs={'class': 'Linker'}) 
if DEBUG: 
    for d in data: 
     print url_base+d['href'] 

for d in data: 
    if DEBUG: print d 

    #set the link value and open it 
    link = url_base+d['href'] 
    driver.get(link) 

回答

0

以这样的方式您不能使用Selenium + requestsdriver.get(url)requests.get(url)是两个不同的GET请求(之间不存在相关性他们)和time.sleep(10)将不会影响response = requests.get(url)。此外,它似乎是目标元素是动态的一些JavaScript产生的,所以你不能用requests.get(url)得到它们,因为它们不存在于初始HTML代码

尝试获取网页源代码如下:

driver.get(url) 
time.sleep(10) 
html = driver.page_source 

soup = bs4.BeautifulSoup(html, "html.parser") 
+0

我是一个白痴。我已经使用二者一起编写了十几个脚本,并始终遵循您指定的方法。我使用BeautifulSoup唯一脚本作为更改的基础,但未注意到我没有这样做。谢谢 – HenryM