当使用Python爬虫抓取网页源码时,如果遇到网页内容未完全加载的问题,可以尝试以下几种方法:
等待网页加载
使用`time.sleep(seconds)`函数在发送请求后等待一段时间,让网页加载完成。
使用Selenium
利用Selenium库模拟浏览器行为,如点击按钮或刷新页面,以触发内容加载。
示例代码:
```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
chrome_options = Options()
chrome_options.add_argument('--headless') 无头模式
chrome_options.add_argument('--disable-gpu')
path = "D:\\MyDrivers\\chromedriver.exe" 指定chromedriver路径
service = Service(path)
driver = webdriver.Chrome(service=service, options=chrome_options)
url = "http://skell.sketchengine.eu" 需要抓取的网页URL
driver.get(url)
等待页面加载,这里可以根据实际情况调整等待时间
time.sleep(5)
获取网页源码
html = driver.page_source
使用BeautifulSoup解析网页
soup = BeautifulSoup(html, 'html.parser')
提取所需信息
示例:提取所有段落文本
paragraphs = soup.find_all('p')
for p in paragraphs:
print(p.get_text())
关闭浏览器
driver.quit()
循环刷新页面
在循环中不断刷新页面,并设置适当的等待时间,以确保内容被重新加载。
示例代码:
```python
from selenium import webdriver
from bs4 import BeautifulSoup
import time
chrome_options = Options()
chrome_options.add_argument('--headless') 无头模式
chrome_options.add_argument('--disable-gpu')
path = "D:\\MyDrivers\\chromedriver.exe" 指定chromedriver路径
service = Service(path)
driver = webdriver.Chrome(service=service, options=chrome_options)
urls = ["http://skell.sketchengine.eu"] 需要抓取的网页URL列表
while urls:
url = urls.pop(0)
driver.get(url)
time.sleep(5) 等待页面加载
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
提取所需信息
示例:提取所有段落文本
paragraphs = soup.find_all('p')
for p in paragraphs:
print(p.get_text())
刷新页面以获取新内容
driver.refresh()
time.sleep(2) 等待页面刷新
关闭浏览器
driver.quit()
请注意,频繁的请求或操作可能会导致目标网站封锁爬虫。在进行爬虫开发时,请遵守网站的robots.txt规则,并适当控制爬取频率