一、下载ChromeDriver
注意版本与Selenium对应,如果不清楚运行代码时会报错提示,只需要找到对应版本就行。
下载地址: /mirrors/chromedriver/
二、导入资源包
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
三、核心代码
if __name__ == '__main__':
chrome_options = Options()
# 设置chrome浏览器无界面模式
chrome_options.add_argument('lang=zh_CN.UTF-8') # 设置中文
# chrome_options.add_argument('window-size=1920x3000') # 指定浏览器分辨率
chrome_options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
# chrome_options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
chrome_options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
# 设置手机请求头 (手机页面反爬虫能力稍弱)
chrome_options.add_argument(
'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36')
# 加载设置
browser = webdriver.Chrome(options=chrome_options)
url = "/item.htm?spm=a230r.1.14.11.2e677cabjgUgYf&id=587148479406&ns=1&abbucket=2#detail"
# 开始请求
browser.get(url)
# 获取页面内容
html = BeautifulSoup(browser.page_source, 'html.parser')
# 选择有效数据
shop_name = html.select('.tb-shop-name a')
if shop_name:
shop_name = shop_name[0].get('title')
else:
shop_name = ''
print('店铺:' + str(shop_name))
# 关闭浏览器
browser.close()
# 关闭chreomedriver进程
browser.quit()
注意:
3、Selenium还具有显示等待和隐示等待,可以解决ajax渲染的数据无法爬取问题。具体查看文档
地址:/docs/cn/