硒汤和需求量有什么区别?

时间:2019-07-29 08:27:11

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

我正在从Web上爬行一些信息,但是当我使用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时,它返回一个空列表。 但是在请求中,有一个包含一些字符串的列表。

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

1 个答案:

答案 0 :(得分:1)

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

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

如果动态创建站点,则这2个之间的区别是requests不支持该渲染/ java脚本。由于selenium实际上会打开浏览器显示页面,因此将允许页面在获取html源之前呈现其内容。

这就是为什么使用requestsselenium时可能会得到两种不同响应的原因。

但是,在上面给出的特定代码中,使用Seleniumrequests可以得到完全相同的输出

代码:

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