![](/img/trans.png)
[英]What is the difference between find() and find_all() in beautiful soup python?
[英]What is difference between soup of selenium and requests?
我正在從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時,它返回一個空列表。 但是在請求中,有一個包含一些字符串的列表。
我之前經歷過類似的事情,所以我想知道這里發生了什么
requests
將獲取/返回初始的html源代碼。
selenium
將模擬/自動化瀏覽器以打開網頁,然后您可以拉出用於呈現該頁面的html源。
這兩個之間的區別是,如果網站是動態創建的,則requests
不支持該渲染/ java腳本。 由於selenium實際上會打開瀏覽器以顯示頁面,因此將允許頁面在獲取html源之前呈現其內容。
這就是為什么在使用requests
和selenium
時可能會得到兩種不同的響應的原因。
但是,在上面給出的特定代碼中,使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.