【问题标题】:Python, BeautifulZoup, Selenium webscrapePython、BeautifulSoup、Selenium 网页抓取
【发布时间】:2016-12-27 12:17:40
【问题描述】:

我正在尝试从网站 (www.hotpads.com) 上抓取一些属性信息。

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

如果我“检查”元素,我可以在页面加载后看到 href 链接被标识为“链接器”类,但如果我使用 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)

【问题讨论】:

    标签: javascript python selenium


    【解决方案1】:

    您不能使用Selenium + requests,因为driver.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")
    

    【讨论】:

    • 我是个白痴。我已经编写了十几个脚本一起使用这两个脚本,并且始终遵循您指定的方法。我使用 BeautifulSoup only 脚本作为更改的基础,但没有注意到我没有这样做。谢谢
    猜你喜欢
    • 2020-11-23
    • 2018-04-25
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2020-09-14
    相关资源
    最近更新 更多