标签:浏览器 get 标签 页面 爬虫 1st 210305 选择器 browser
210305课 1st爬虫重点总结
1, requests库
~ get / post / …
- url
- params —> 查询参数(URL参数) —> 跟在URL问号后面的参数
- data —> post请求发给服务器的数据 —> {‘参数名’: ‘参数值’}
- headers —> HTTP请求头 —> User-Agent / Cookie / Accept
- proxies —> 设置代理服务器 —> HTTP / SOCKS
- files —> 上传文件(post请求)
- verify —> HTTPS证书验证(True/False)
- timeout —> 请求超时时间
~ Session对象 —> get() / post()
~ Response对象
- text / content / json()
- cookies —> 服务器向浏览器写的临时数据
- status_code —> 响应状态码
import requests
session = requests.Session()
session.headers = {
'User-Agent': 'pass'
}
resp = session.get('pass')
print(resp.cookies)
# 如果上一个请求服务器反回了Cookie数据,
# 下一次请求时session对象会维持临时状态
2, 页面解析
-
~ 正则表达式解析 —> re —> compile / search / match / findall / finditer
-
CSS选择器解析 —> beautifulsoup4 / pyquery —> BeautifulSoup
—> select() / select_one() —> text / attrs[’…’]
- 标签选择器、属性选择器、类选择器、ID选择器
- 各种选择器的组合(父子、后代、兄弟)
- 伪类/伪元素 - XPath解析 —> lxml
# pyquery的使用方法
from pyquery import PyQuery
pq = PyQuery(url='https://image.so.com/')
pq = pq('div.list-mod.list-mod-0 >div >ul >li >a')
for anchor in pq.items():
print(anchor.attr('href'), anchor.text())
3, Selenium 爬取动态页面
-
~ chromedriver无头模式 —> PATH —> 放在虚拟环境中或者Python解释器中
- browser = webdriver.Chrome(options) —> ChromeOptions
- 加载页面:browser.get(’…’)
-
隐式等待或者显示等待
- browser.implicitly_wait(10)
- WebDriverWait(browser, 10) —> until —> 期望条件 -
获取页面元素(标签):—> 可以获取动态内容
- page_source —> 带动态内容的HTML页面 —> 正则表达式解析
- find_element_by_css_selector(’…’) —> WebElement-
~ send_keys():模拟输入
- click():模拟点击
- text:获取标签中的内容
- get_attribute(’…’):获取标签指定属性
- location:获取标签在浏览器窗口中的位置
- size:获取标签的宽度和高度
-
is_displayed():判断元素是否可见(不可见的a标签很有可能是蜜罐链接,诱使爬虫去访问的)
- find_element_by_xpath(’…’) —> XPath语法不会写也是在浏览器开发者工具中直接拷贝
- find_elements_by_css_selector(’…’) —> [WebElement, …]
- find_elements_by_xpath(’…’)
- 关闭浏览器对象 —> browser.close()
-
switch_to属性 —> 切换浏览器窗口 —> window() / frame()
- browser.switch_to.window(browser.window_handles[2])
标签:浏览器,get,标签,页面,爬虫,1st,210305,选择器,browser
来源: https://blog.csdn.net/AncenaJune/article/details/114406268
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。