
爬虫
呆萌的代Ma
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解决selenium使用.get()报错:unknown error: unsupported protocol
将原来的:```pyurl = "https://www.baidu.com"browser.get(url)```替换为:```pyurl = "https://www.baidu.com"browser.execute_script(f"window.location.replace('{url}');") # 直接平替 .get()```原创 2023-12-08 08:52:46 · 820 阅读 · 0 评论 -
selenium新版使用find_element/find_elements函数锁定元素(替换原有find_element_by_xx)
原来的都被修改为(返回匹配到的第一个元素)或(返回全部的匹配元素)原创 2023-11-22 10:08:34 · 1131 阅读 · 0 评论 -
解决selenium访问网页中多个iframe,导致无法锁定元素的问题
不同的iframe之间的元素无法被selenium锁定,因此需要通过人为调试,得到具体的iframe窗口,进入目标iframe后才能够进行元素的锁定,锁定后就得到目标内容,但是此时完成操作后需要使用。退回到原有的iframe,才可以接着原有的逻辑进行操作。原创 2023-11-21 17:02:50 · 953 阅读 · 0 评论 -
selenium判断元素是否存在的方法
selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的。,如果不存在这个元素就会返回一个空列表。而如果索引下面那一部分,得到结果。索引网页内存在的内容,得到结果。此时如果随便索引一个,结果为。原创 2023-11-21 16:50:44 · 2301 阅读 · 1 评论 -
解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面
在需要下载文件时,只需要直接。即可直接下载文件到配置的。原创 2023-11-21 16:26:35 · 2043 阅读 · 0 评论 -
selenium设置(有界面/无界面浏览器)下载文件路径
配置方法是添加```download.default_directory```原创 2023-04-14 13:38:20 · 3858 阅读 · 0 评论 -
windows配置selenium
windows配置selenium1. 确定chrome版本2. 下载并配置chrome驱动3. 测试原创 2023-03-31 14:24:54 · 630 阅读 · 0 评论 -
Mac使用Appium连接真机与appium-inspector配置
1. 配置Java SDK与Android SDK请参考如下博客,配置好jdk与android sdk即可Linux配置jdk:https://blog.youkuaiyun.com/weixin_35757704/article/details/118930409Mac配置与下载安卓SDK,配置adb命令:https://blog.youkuaiyun.com/weixin_35757704/article/details/1226165162. 连接真机使用USB连接真机将USB偏好设置为MIDI测试设备连接情原创 2022-02-02 12:41:59 · 5097 阅读 · 3 评论 -
解决Appium连接报错Could not find ‘apksigner.jar‘
解决方法进入android sdk目录,运行:find . -name 'apksigner.jar'可以看到:./build-tools/31.0.0/lib/apksigner.jar复制./build-tools/31.0.0/lib/apksigner.jar的apksigner.jar文件复制到platform-tools/下即可问题解析这个应该是个BUG...原创 2022-02-02 11:29:50 · 9699 阅读 · 0 评论 -
解决appium-inspector连接后在Appium中报错:No route found for /sessions
完整报错Appium inspector 连接点击start session后在Appium中报错:[HTTP] <-- GET /sessions 404 6 ms - 211[HTTP] [HTTP] --> GET /sessions[HTTP] {}[HTTP] No route found for /sessions如果:Appium版本1.xappium-inspector为新版(最近下载)那么99.9%会有这个问题解决方法在Appium inspector原创 2022-02-02 09:52:42 · 9569 阅读 · 4 评论 -
selenium自动向下滚动页面,并指定最大滑动距离
需要selenium控制的chrome向下滑动,自动加载一些内容,核心代码是:browser.execute_script("window.scrollBy(0,300)")这行可以向下滑动300个像素需要的工具函数如下:def roll_window_to_bottom(browser, stop_length=None, step_length=500): """selenium 滚动当前页面,向下滑 :param browser: selenium的webdriver原创 2022-02-01 13:19:34 · 6020 阅读 · 2 评论 -
scrapy爬虫循环抓取同一个url,避免同一URL使爬虫关闭
主要方法是:def param_main(self, response): all_item_css = response.css("div.item") # 各种操作... yield scrapy.Request(response.url, callback=self.param_main, dont_filter=True, meta={})想要循环抓取同一URL,必须在yield scrapy.Request中,同时满足以下两点:callback指向自己(类似于递归原创 2022-02-01 00:26:24 · 1544 阅读 · 0 评论 -
python保存随机的user-agent到本地并使用
user-agent的数据使用的是github上fake-useragentfake-useragentgithub地址:https://github.com/hellysmile/fake-useragent数据网址:https://fake-useragent.herokuapp.com/browsers/0.1.11示例代码import requestsimport jsondef write_ua(): # 写入文件 ua_request = requests.get("ht原创 2022-01-29 19:43:25 · 383 阅读 · 0 评论 -
selenium设置js加载的时限,防止持续加载页面
对于Firefox,Chrome只需要在:from selenium import webdriverbrowser = webdriver.Chrome(desired_capabilities={"page_load_strategy": "none"})browser.set_page_load_timeout(10)对于非Firefox,Chrome,可以使用:browser.implicitly_wait(5)如果需要在代码中强制停止,可以使用:browser.execute原创 2022-01-08 16:31:04 · 1232 阅读 · 0 评论 -
scrapy使用meta在各个模块的组件之间传递数据
发送数据在爬虫文件中,通常用:yield scrapy.Request( "url", callback=self.get_qualification, dont_filter=True, meta={ "key":"value" , })其他地方也是在最后添加meta接收数据request.meta['key']...原创 2021-12-18 10:40:01 · 676 阅读 · 0 评论 -
scrapy初始化selenium,防止网站反爬虫策略监测自动化控件
反爬策略会监测是否是自动化控件在操纵浏览器,webdriver默认会给一个友好的提示,但是我们希望它邪恶一点,一般在middleware.py中添加这个配置项:from selenium import webdriverimport timefrom scrapy.http import HtmlResponseclass HandlessMiddleware(object): def __init__(self): # super(HandlessMiddleware原创 2021-12-18 10:33:20 · 483 阅读 · 0 评论 -
python网络爬虫 抓取金融分析师名单
分析师名单网站:https://www.xiadun.net/rank/authorlist.php代码import requestsimport randomfrom lxml.html import etreedef get_analyst(): url = "https://www.xiadun.net/rank/authorlist.php" timeout = 60 user_agent = { 'User-Agent': random.cho原创 2021-11-29 14:06:41 · 350 阅读 · 0 评论 -
selenium headless报错Message: unknown error: failed to wait for extension background page to load
selenium.common.exceptions.WebDriverException: Message: unknown error: failed to wait for extension background page to load: chrome-extension://xxxxxx/background.html无解…原因是:chrome headless无头浏览器不支持chrome-extension,至今没有解决…参考网站:https://stackoverflow.co原创 2021-10-13 18:02:23 · 1389 阅读 · 2 评论 -
selenium控制浏览器切换页面
selenium通过:新建标签页:browser.execute_script('window.open("","_blank");')关闭标签页:browser.close()切换页面:browser.switch_to.window()显示全部的页面:browser.window_handlesfrom selenium.webdriver.chrome.options import Optionsfrom selenium import webdriveroptions = Opt原创 2021-10-13 17:21:52 · 2453 阅读 · 0 评论 -
python selenium加载插件
以chrome加载adblock_v3.6.12.crx插件为例:from selenium.webdriver.chrome.options import Optionsfrom selenium import webdriveroptions = Options()options.add_argument('--disable-gpu')options.add_argument('lang=zh_CN.UTF-8')options.add_extension("adblock_v3.6.1原创 2021-10-13 17:13:39 · 1709 阅读 · 0 评论 -
scrapy导入配置文件setting.py,防止运行时找不到文件
最好不要使用路径寻找配置文件,使用from scrapy.utils.project import get_project_settingsfrom scrapy.utils.project import get_project_settingsresult = get_project_settings().get("我的配置项")原创 2021-10-07 16:03:35 · 515 阅读 · 0 评论 -
scrapy使用selenium抓取深圳证券交易所考评表数据
文章目录步骤一:selenium爬虫代码步骤2:清洗数据3. 整理格式并导出excel网址:http://www.szse.cn/disclosure/supervision/check/index.html步骤一:selenium爬虫代码import timefrom selenium import webdriveroption = webdriver.ChromeOptions()option.add_argument('--disable-gpu')option.add_argu原创 2021-10-01 15:58:35 · 600 阅读 · 0 评论 -
scrapy保存、中断、继续执行爬虫程序
在scrapy文件中的custom_settings写入JOBDIR即可,比如:'JOBDIR': '../jobs/baidu_news',baidu_news这个位置就是当程序停止爬虫的时候当前的运行状态就会记录在这个文件中,当再次爬取时会接着保存的状态进行爬取案例class BaiduSpiderSpider(CrawlSpider): """Get news from news.baidu.com """ name = "baidu_spider" allo原创 2021-10-01 15:44:26 · 1410 阅读 · 0 评论 -
scrapy通过item类直接创建数据库中的数据表
思路如下:首先在item中写入需要构造的item将item的key得到,构造dataframe借助dataframe构造数据表最后使用sql构造可以在数据库中自增长的主键完整代码# Define here the models for your scraped items## See documentation in:# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapyclass CompanyIn原创 2021-09-20 15:22:05 · 570 阅读 · 0 评论 -
解决Scrapy使用pipline保存到数据库后返回None
这也不算报错哈解决方法在process_item处理完成后返回item即可:return item案例分析比如下面的pipeline:class MyPipeline(object): def __init__(self): host = "127.0.0.1" user = "xxx" password = "xxx" db = "xxx" self.conn = pymysql.connect(hos原创 2021-09-19 10:25:21 · 599 阅读 · 0 评论 -
scrapy使用pipeline保存不同的表单Item到数据库、本地文件
文章目录步骤1:构造Item步骤2:构造Pipeline步骤3:setting配置pipeline步骤1:构造Itemimport scrapyclass StockItem(scrapy.Item): stock_code = scrapy.Field() company_name = scrapy.Field() stock_type = scrapy.Field()class CompanyInfoItem(scrapy.Item): name = sc原创 2021-09-19 09:54:48 · 692 阅读 · 0 评论 -
scrapy中使用css选择器罗列下一级的所有标签
使用:.css('dl>*')即为罗列dl标签的下一级所有标签例子<dt id='dt_id'> <dl>a</dl> <dl>b</dl> <dl> <h1>c</h1> </dl></dt>使用data_dt = response.css('dl#dt_id')all_child_elements = data_原创 2021-01-06 10:47:22 · 1034 阅读 · 0 评论 -
selenium使用浏览器隐私模式加载网站
使用火狐的隐私模式打开百度,代码如下:from selenium.webdriver.firefox.options import Optionsfrom selenium import webdriverurl = 'https://www.baidu.com'options = Options()firefox_profile = webdriver.FirefoxProfile()firefox_profile.set_preference("browser.privatebrowsin原创 2020-12-26 17:29:31 · 1054 阅读 · 0 评论 -
python selenium解决报错SessionNotCreatedException session not created: No matching capabilitie与问题解析
解决方法查看导包是否正确:如果是webdriver.Chrome,那么导包的一切都要是chrome的如果是webdriver.Firefox,那么导入的包也都源于firefox的包出现这个问题是因为由于selenium很多类都很相似,如selenium.webdriver.firefox.options与selenium.webdriver.chrome.options,导致导包的时候容易出错,而代码本身是没有问题的。问题解析错误代码如下:from selenium.webdriver.f原创 2020-12-26 16:21:39 · 11240 阅读 · 0 评论 -
Mac 配置selenium连接chrome
输入chrome://version/ ,查看chrome版本,如图为87.0.4280.88:到网址http://chromedriver.storage.googleapis.com/index.html 上下载适合自己的版本, 我需要下载的是87.0.4280.88版本对应的chromedriver_mac64.zip下载后:unzip chromedriver_mac64.zipmv chromedriver /usr/local/bin测试一下运行python:f.原创 2020-12-26 16:14:59 · 275 阅读 · 0 评论 -
Scrapy 调用chrome浏览器的middleware
下面是scrapy中调用chrome浏览器的middleware,可以设置是否更换头,是否无界面,是否加载css与图片原创 2020-11-30 21:57:16 · 657 阅读 · 0 评论 -
selenium使用webdriver新开标签页
from selenium import webdriveroption = webdriver.ChromeOptions()browser = webdriver.Chrome(chrome_options=option)browser.execute_script('window.open("","_blank");') # 新开标签页browser.switch_to.window(browser.window_handles[1]) # 转到第一个...原创 2020-11-30 21:54:47 · 1614 阅读 · 0 评论 -
Mac selenium调试已经存在的Chrome浏览器
文章目录配置chrome连接浏览器配置chromeopen -e ~/.zshrc在结尾添加:export PATH="/Applications/Google Chrome.app/Contents/MacOS:$PATH"保存后退出,然后启动一个窗口:Google\ Chrome --remote-debugging-port=19222 --user-data-dir="~/ChromeProfile"其中Google\ Chrome为一个命令,把chrome添加到环境变量就可以看原创 2020-10-25 19:34:04 · 1611 阅读 · 0 评论 -
scrapy使用(无头)浏览器爬取动态网页
middleware配置:class HandlessMiddleware(object): def __init__(self): super(HandlessMiddleware, self).__init__() option = webdriver.ChromeOptions() # option.add_argument('headless') option.add_argument('user-agent=' + Use原创 2020-10-13 20:23:46 · 669 阅读 · 0 评论 -
selenium配置无界面chrome浏览器
from selenium import webdriverfrom fake_useragent import UserAgent # pip install fake_useragentoption = webdriver.ChromeOptions()ua = UserAgent()option.add_argument('--disable-gpu') # 禁用GPUoption.add_argument('lang=zh_CN.UTF-8')option.add_argument(原创 2020-10-11 16:02:03 · 993 阅读 · 0 评论 -
scrapy setting配置
个人配置,没有动态ip时还是稳妥一点# Obey robots.txt rulesROBOTSTXT_OBEY = FalseDOWNLOAD_DELAY = 5CONCURRENT_REQUESTS_PER_IP = 16COOKIES_ENABLED = FalseAUTOTHROTTLE_ENABLED = True原创 2020-10-11 15:54:03 · 100 阅读 · 0 评论 -
scrapy配合selenium爬取需要反复操作同一个动态页面的方法,解决点击“下一页”但是URL相同的网站
首先这种网站一定要设置爬取的速率,目标网站用这种方式写入网页估计是被爬虫搞怕了,大概率有更简单的反爬方法,因此爬取速率要注意。博主要爬的网站是一个电影网站:艺恩,点击下一页可以看到其实执行了一个js拿数据,但是URL却没有任何变化,我们需要一路下一页下一页点下去,然后把展示出的电影详情也搞到。爬取思路:启动selenium,控制Chrome开两个标签页,第一个标签页显示主页,第二个标签页显示不同的电影详情页如果是需要点击下一步的,就先跳转到第一个tab,然后点击“下一步”,把网页信息传回去。如果要原创 2020-10-08 16:52:49 · 3320 阅读 · 1 评论 -
python selenium使用JS新建标签(new tab)与切换标签
以下是通用操作,不建议用快捷键的方式新开tab,因为js是通用的:from selenium import webdriverdriver = webdriver.Chrome() # 新建窗口driver.execute_script('''window.open("","_blank");''') # 新开一个标签页面driver.switch_to.window(driver.window_handles[0]) # 切换到第1个标签页for i in driver.window_han原创 2020-10-08 13:27:05 · 1610 阅读 · 0 评论 -
selenium隐式等待
有些页面加载js需要一定时间,比如淘宝页面,selenium的隐式等待会在查询元素时自动等待,当元素被发现时再执行提取元素内容的操作,比起 time.sleep()节约了很多时间,配置方法如下:browser = webdriver.Chrome()browser.implicitly_wait(5)browser.get('www.baidu.com') # 爬取百度页面browser.find_element_by_id('okkk') # selenium会自动等待 id=okkk的元素,最长原创 2020-10-08 09:23:57 · 875 阅读 · 0 评论 -
解决scrapy不执行Request回调函数callback
情况1:未完成函数/测试函数那个函数没有任何结果返回,可能这就是一个测试函数或是没写完的函数,因此只需要在这个函数结尾加一个yield就可以了,回调另一个空的函数就不会有任何影响:# -*- coding: gbk -*- def parse(self, response): # balabala yield scrapy.Request(movie_url, callback=self.test_page, dont_filter=False, meta={原创 2020-10-06 15:16:33 · 2348 阅读 · 2 评论