【问题标题】:What is difference between soup of selenium and requests?硒汤和请求有什么区别?
【发布时间】:2019-12-06 13:25:09
【问题描述】:

我正在从网络上抓取一些信息,但是在我使用 Selenium 和请求时得到了不同的结果

driver.get('https://www.jobplanet.co.kr/companies/322493/benefits/%EC%A7%80%EC%97%90%EC%9D%B4%EC%B9%98%EC%94%A8%EC%A7%80')
soup= BeautifulSoup(driver.page_source, 'html.parser')
sample= soup.find_all('div', class_='accord_hd')`

请求

response= requests.get('https://www.jobplanet.co.kr/companies/322493/benefits/%EC%A7%80%EC%97%90%EC%9D%B4%EC%B9%98%EC%94%A8%EC%A7%80')
soup= BeautifulSoup(response.content, 'html.parser')
sample= soup.find_all('div', class_='accord_hd')`

在使用 Selenium 时,它返回一个空列表。 但在请求中,有一个包含一些字符串的列表。

我以前经历过类似的事情,所以我想知道这里发生了什么

【问题讨论】:

  • @Axois Selenium 是一个在后台运行的无头浏览器。而且 Selenium 在底线也是使用 http 请求。

标签: python selenium beautifulsoup python-requests web-crawler


【解决方案1】:

requests 将获取/返回初始 html 源代码。

selenium 将模拟/自动化浏览器打开网页,然后您可以拉取用于呈现页面的 html 源代码。

这两个之间的区别是requests 如果站点是动态创建的,则不支持该呈现/java 脚本。虽然 selenium 实际上会打开浏览器来显示页面,但会允许页面在获取 html 源代码之前呈现其内容。

这就是为什么您在使用 requestsselenium 时可能会得到 2 个不同的响应。

但是,在您上面给出的特定代码中,我使用 Selenium 和使用 requests 得到完全相同的输出

代码:

from bs4 import BeautifulSoup
from selenium import webdriver
import requests

driver = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe')
driver.get('https://www.jobplanet.co.kr/companies/322493/benefits/%EC%A7%80%EC%97%90%EC%9D%B4%EC%B9%98%EC%94%A8%EC%A7%80')
soup= BeautifulSoup(driver.page_source, 'html.parser')
sample_selenium= soup.find_all('div', class_='accord_hd')

driver.close()



import requests

response = requests.get('https://www.jobplanet.co.kr/companies/322493/benefits/%EC%A7%80%EC%97%90%EC%9D%B4%EC%B9%98%EC%94%A8%EC%A7%80')
soup= BeautifulSoup(response.content, 'html.parser')
sample_requests= soup.find_all('div', class_='accord_hd')



print ('Selenium: %s items\nRequests: %s items' %(len(sample_selenium), len(sample_requests)))

输出:

Selenium: 11 items
Requests: 11 items

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多