Python 官方文档:入门教程 => 点击学习
目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭(可选) 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie(出错) 导入cook
目录
用python来爬取某鱼的商品信息(1/2)_木木em哈哈的博客-CSDN博客本章讲理论,后面一节讲代码拿来练练手的,练练selenium包,实战一下(本来想拿来练手的,没想到他喵的有挺多防爬的,直接开局就困难难度我靠,凸(艹皿艹 ))找到可以爬取的网站然后添加cookie然后刷新界面就可以发现搜索结果出来了这一次实战经历真的让我遇到了selenium许多奇奇怪怪的反爬手段,也是让我可以大幅度提升自己实战经验的一个经历,前前后后排bug,绕反爬,这一个项目打了整整两天。累diethttps://blog.csdn.net/mumuemhaha/article/details/132238660?spm=1001.2014.3001.5502
主要讲的是上一章的代码实现
导入所需要的程序包
from selenium import WEBdriverfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.keys import Keysimport timeimport JSON
之后先设置自己想要搜索的内容,并且把浏览器设置为允许结束后不关闭,并且打开要爬取的咸鱼网站(可设可不设)
input_1=input('输入想要搜索的内容:')option = webdriver.ChromeOptions()option.add_experimental_option("detach", True)# 注意此处添加了chrome_options参数driver = webdriver.Chrome(chrome_options=option)driver.get('Https://h5.m.Goofish.com/app/idleFish-F2e/fish-mini-pha/search.html?spm=a2170.tb_mini_index.0.0')
driver_1=driver.find_element(by='xpath',value='/html/body/div/div/div[1]/input')
执行动作(调用鼠标api点击刚刚定位的搜索框,然后输入input_1的值并且回车
ActionChains(driver) \ .move_to_element(driver_1) \ .click_and_hold() \ .pause(1) \ .send_keys(input_1) \ .key_down(Keys.ENTER)\ .perfORM()time.sleep(1)
中间的.pause(1)以及time.sleep(1)是等待一秒钟的时间(保险起见,怕网页没有加载好,或者你设置一个selenium等待函数更保险)
接下来就是获取cookie,获取cookie方法上一章讲了
在你的浏览器上,下载cookie editor插件登录,不要用运行Python时跳出的浏览器,正常打开浏览器(这样不会跳验证码。。。即使跳了也可以手动成功过),导出你的cookie
然后新建一个json格式的文件并且把它命名为cookie.json
cookies=json.load(open('cookie.json', 'r'))for cookie in cookies: driver.add_cookie(cookie)
但是!!!!
前面讲过直接导入会报错
assert cookie_dict[‘sameSite‘] in [‘Strict‘, ‘Lax‘] AssertionError()
由于这里语法规定sameSite必须为‘Strict‘, ‘Lax‘两个之一,不然就报错
所以我们要遍历字典,并且把字典中的sameSite设置为Strict
所以代码改为
cookies=json.load(open('cookie.json', 'r'))for cookie in cookies: if'sameSite' in cookie: cookie['sameSite'] = 'Strict' driver.add_cookie(cookie)driver.refresh()
注意,导入cookie后要用driver.refresh()刷新
然后打印网页的源代码,注意要等3秒加载元素(或者用re库带的筛选,筛选你想要的的元素,比如商品链接,价格,以及介绍)
time.sleep(3)print(driver.page_source)
所有代码附上吧
from selenium import webdriverfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.keys import Keysimport timeimport jsoninput_1=input('输入想要搜索的内容:')# 不自动关闭浏览器option = webdriver.ChromeOptions()option.add_experimental_option("detach", True)# 注意此处添加了chrome_options参数driver = webdriver.Chrome(chrome_options=option)driver.get('https://h5.m.goofish.com/app/idleFish-F2e/fish-mini-pha/search.html?spm=a2170.tb_mini_index.0.0')driver_1=driver.find_element(by='xpath',value='/html/body/div/div/div[1]/input')ActionChains(driver) \ .move_to_element(driver_1) \ .click_and_hold() \ .pause(1) \ .send_keys(input_1) \ .key_down(Keys.ENTER)\ .perform()time.sleep(1)cookies=json.load(open('cookie.json', 'r'))for cookie in cookies: if'sameSite' in cookie: cookie['sameSite'] = 'Strict' driver.add_cookie(cookie)driver.refresh()time.sleep(3)print(driver.page_source)
这些代码搞得我晕头转向的,尤其是那个内嵌的登录页面让我走了很多弯路,但是对于这个库的学习应该也算是初窥门径吧,如果有大佬有优化的地方欢迎指出(真的没学多深,很容易出错的)
来源地址:https://blog.csdn.net/mumuemhaha/article/details/132260466
--结束END--
本文标题: 用python来爬取某鱼的商品信息(2/2)
本文链接: https://lsjlt.com/news/385019.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0