Giter Site home page Giter Site logo

cxspider's Introduction

CxSpider : ChangXing Spider

本项目为爬虫合集,包括作者自行设计实现的爬虫(以下简称合集设计的爬虫),和作者收录的其他爬虫(以下简称爬虫)。其中“合集设计的爬虫”为作者在各种项目中实际使用过的爬虫,至少曾经在某个时刻可以稳定地采集研究量级的数据;“合集收录的爬虫”为作者在任意环境下使用或测试过的爬虫。

因为目标网站随时可能出现变化,同时网站中也可能出现特殊页面,所有爬虫可能出现部分失效或完全失效的情况。因此建议使用者在使用爬虫时仔细检查数据的完整性和准确性,以避免造成损失。

如果您发现本合集中的爬虫出现部分失效或完全失效的情况,请在本项目的Issues中提出,谢谢!



本合集提醒您:在使用“CxSpider 长行的爬虫合集”(以下简称本合集)的爬虫前,请您务必仔细阅读并透彻理解本合集的免责声明(以下简称免责声明)。您可以选择不使用本合集,但如果您使用本合集,您的使用行为将被视为对免责声明全部内容的认可。

一、合集设计的爬虫

“合集设计的爬虫”,即本合集作者自行设计实现的爬虫,这些爬虫均继承了crawlertool工具模块中单线程爬虫的抽象基类(SingleSpiderLoopSpider),具有统一的配置方式、调用方式和返回数据格式。在爬虫具体的设计实现中,为了方便爬虫的使用,遵循了如下原则:

  • 每个爬虫为一个单独的Python脚本(.py文件),这个脚本仅依赖于发布在pypi(可以通过pip安装)的工具模块及自身;方便通过直接复制代码来使用爬虫。
  • 所有爬虫返回结果均为统一的字典列表格式(List[Dict]),同时在工具模块中配有将字典列表格式数据写入到csv、Excel和MySQL的工具函数;方便统一地处理爬虫返回的结果数据。
  • 所有爬虫均发布到pypi的cxspider模块(pip install cxspider)中;方便直接通过pip安装调用。

在使用合集设计的爬虫时,可以结合爬虫的Readme文档以及”爬虫设置&调用方法“中的方法,配置、调用爬虫。

(一)合集设计的爬虫列表

爬虫名称 爬虫平台.爬虫功能 [源代码路径] 爬虫状态 (最近检查时间)
AcFun_Video A站.视频信息爬虫 [源] 有效 (2020.12.28)
Alexa_Website_Info Alexa.网站信息爬虫 [源] 有效 (2020.12.28)
Anjuke_City_Code_List 安居客.各城市编码列表爬虫 [源] 有效 (2020.12.28)
Anjuke_House_Resources_Num 安居客.房源数量爬虫 [源] 有效 (2020.12.28)
Bilibili_Live_Barrage B站.直播弹幕爬虫 [源] 有效 (2020.12.28)
Bilibili_User_Video_List B站.UP主发布视频列表爬虫 [源] 有效 (2020.12.28)
Cnki_Article_List **知网.刊期包含论文列表爬虫 [源] 有效 (2020.12.28)
Cnki_Issue_List **知网.期刊包含刊期列表爬虫 [源] 有效 (2020.12.28)
Douban_Movie_Top_250 豆瓣.电影TOP250爬虫 [源] 有效 (2020.12.28)
Douyu_Live_Barrage 斗鱼.直播弹幕爬虫 [源] 有效 (2020.12.28)
Douyu_Live_Subscribe 斗鱼.直播间订阅数爬虫 [源] 已失效
Facebook_Account_Info Facebook.账号信息爬虫 [源] 有效 (2020.12.28)
Facebook_Account_Post Facebook.账号发布推文爬虫 [源] 有效 (2020.12.28)
Google_Result_Num Google.搜索结果数量爬虫 [源] 有效 (2020.12.28)
Huya_Live_Barrage 虎牙.直播弹幕爬虫 [源] 已失效
Huya_Live_Subscribe 虎牙.直播间订阅数爬虫 [源] 有效 (2020.12.28)
Julive_City_Url_List 居理新房.城市页面地址列表爬虫 [源] 有效 (2020.12.28)
LeetCode_Problem_List LeetCode·题目列表爬虫 [源] 有效 (2021.03.30)
Maoyan_Web_Heat 猫眼.猫眼网播热度爬虫(DEMO) [源] 未知 (1年内未检测)
Qidian_Book_Type_List 起点中文网.小说排行榜爬虫(DEMO) [源] 有效 (2020.12.28)
Twitter_Account_Info Twitter.账号信息爬虫 [源] 有效 (2020.12.28)
Twitter_Account_Post Twitter.账号发布推文爬虫 [源] 有效 (2020.12.28)
Wanplus_Lol_Date_List 玩加电竞.英雄联盟每日比赛列表爬虫 [源] 有效 (2020.12.28)
Wanplus_Lol_Match_Info 玩加电竞.英雄联盟场次详细信息爬虫 [源] 已失效
Wanplus_Lol_Match_List 玩加电竞.英雄联盟比赛包含场次列表爬虫 [源] 有效 (2020.12.28)
WeGame_TFT_Exploit_Detail WeGame.云顶之弈比赛记录爬虫C:游戏场次详情 [源] 有效 (2020.01.08)
WeGame_TFT_Exploit_List WeGame.云顶之弈比赛记录爬虫B:游戏场次列表 [源] 有效 (2020.01.08)
WeGame_TFT_Summoner_List WeGame.云顶之弈比赛记录爬虫A:召唤师列表 [源] 有效 (2020.01.08)
Weibo_Account_Info 微博.账号信息爬虫 [源] 有效 (2020.12.28)
Weibo_Account_Post 微博.账号发布推文爬虫 [源] 有效 (2020.12.28)
Weibo_Hot_Ranking 微博.热搜榜爬虫 [源] 有效 (2020.12.28)

爬虫列表顺序:先依据域名部分排序,再依据功能部分排序;域名部分按字典序排序,功能部分按功能关系排序。

爬虫命名规则:爬虫名称由爬虫目标网站的域名和爬虫的具体功能描述组成。在域名部分中,如果一级域名可以有效描述则包括一级域名即可(例如AcFun),如果以及域名不能有效描述,则需要通过“一级域名_二级域名”来表示(例如Baidu_Tieba),如果目标为APP,则使用APP的通用名称;一级域名和二级域名均使用驼峰式表示;如果一级域名为数字开头,则在数字前添加大写字母N。在具体功能描述部分中,每个单词都首字母大写,并且使用下划线间隔单词。

(二)爬虫使用说明

本项目在计划中将会实现三种运行爬虫的方法,在现阶段在IDE执行Python脚本的运行方法支持较好,未来将会逐渐支持另外两种爬虫的运行方法。

1. 在IDE中执行Python脚本(当前支持较好)

第1步:检查Python环境

Python版本要求:>=3.8

检查系统的Python环境,如果没有安装则安装Python环境【教程链接】;建议同时安装Python的IDE。

第2步:pip安装爬虫所需的Python工具模块

每个爬虫依赖的工具模块均在爬虫文档(爬虫文件夹中的README文档)的“依赖列表”中列出,直接使用pip安装即可。一些爬虫经常调用的工具模块的功能如下:

crawlertool : 本项目配套爬虫工具模块 (必需) 安装:pip install crawlertool 本项目配套的最基本的爬虫工具模块,包括爬虫的抽象基类,以及信息提取、数据库读写、IO操作等工具函数。

Selenium4R : 本项目配套Selenium工具模块 (Selenium爬虫必需) 安装:pip install Selenium4R 魔改版Selenium,增加webdriver的自动下载和缓存,增加对POST请求的支持,自动处理一些常见异常。

其他常用的Python爬虫工具模块已经添加到crawlertool的依赖中,包括:

bs4 (BeautifulSoup4) : Dom解析工具 (部分爬虫需要) 安装:pip install bs4

lxml : Dom解析工具 (部分爬虫需要) 安装:pip install lxml

第3步:安装Chrome浏览器(仅Selenium爬虫需要)

如果在爬虫文档的“依赖列表”中注明了需要Chrome浏览器,则需要在安装Chrome浏览器【官网链接】。

第4步:引用CxSpider项目中的爬虫源代码

可以通过以下方法引用CxSpider中的爬虫源代码:

  • 直接粘贴爬虫源代码中的爬虫类(当前支持较好)

  • 安装cxspider模块,引用cxspider模块中的爬虫类(暂未支持)

第5步:处理爬虫返回的结果数据

所有爬虫返回的结果数据格式均为列表字典(List[Dict]),其中:

  • 列表中的每个元素为一条记录(行),单条的记录均为字典格式
  • 字典中的每一个键值对对应记录中的一个字段(列),其中键为字段名,值为字段的值,每个字段名的含义记录在爬虫文档中。

在处理爬虫返回的结果数据时,如果需要用到爬虫返回结果的字段列表,可以在爬虫类的_COLUMNS属性获取。

本合集设计的爬虫中,对单次运行的爬虫和循环运行的爬虫作出了不同的处理(在爬虫文档中注明了爬虫所属的类型)。具体的:

  • 单次运行的爬虫类继承自抽象基类SingleSpider,调用爬虫时直接调用爬虫类的running方法,running方法的返回值即为爬虫返回的结果数据。
  • 循环运行的爬虫类继承自抽象基类LoopSpider,调用爬虫时调用爬虫的start方法即可启动循环运行的爬虫;在每次循环中,爬虫均会将爬虫返回的结果数据作为参数提供给write方法,因此需要通过重写write方法来处理爬虫返回的结果数据。

第6步:运行爬虫

对于单次运行的爬虫,在构造爬虫类后直接调用爬虫类的running方法即可;

对于循环运行的爬虫,在构造爬虫类并重写write方法后,调用爬虫类的start方法即可启动循环运行的爬虫。

2. 在命令行中执行Python脚本(暂未实现)

第1步:检查Python环境+pip安装爬虫所需的Python工具模块+安装Chrome浏览器(具体方法同上)

第2步:在命令提示符(CMD)中通过命令行参数设置并运行爬虫

具体命令行参数设置方法将会写在每个爬虫的文档中。

3. 使用可执行文件运行(暂未实现)

二、合集收录的爬虫

“合集收录的爬虫”,即本合集作者在使用后收录的、发布于Github项目或博客中的爬虫。本合集只收录这些爬虫所在的Github项目主页或博客页,具体配置、调用方法及返回数据结构需要使用者自行阅读第三方的爬虫介绍。

本合集可能会将其中部分爬虫整理为本合集的统一格式(即“合集设计的爬虫”的格式),以方便使用者调用,但本合集作者不保证这些整理的准确性、稳定性,请使用者自行衡量。

合集收录的爬虫列表

爬虫名称 (依据字典顺序排列) 爬虫平台.爬虫功能 爬虫地址
AutoHome_Article 汽车之家.文章爬虫 文章链接 (斐波那契小李)
Baidu_Tieba_Tiezi_Post 百度贴吧.帖子信息爬虫 Github·Tieba_Spider (Aqua-Dream)
Baidu_Top_List 百度热点.热点信息爬虫 Github·Reptile (librauee)
Bilibili_Picture B站.封面图爬虫 Github·spiders (xiyaowong)
Bilibili_User_Info B站.用户信息爬虫 Github·bilibili-user (airingursb)
Biqukan_Book_Info 笔趣阁.图书爬虫 Github·Reptile (librauee)
Dianping_Goods_Info 大众点评.商品信息爬虫 文章链接 (斐波那契小李)
Dianping_Goods_Comment 大众点评.商品评论爬虫 Github·dianping_textmining (py-bin)
Douban_Book_Info 豆瓣.图书信息爬虫 Github·ScrapyDouban (baabaaox)
Github·Python3Webcrawler (mochazi)
Github·DoubanSpider (lanbing510)
Douban_Movie_Info 豆瓣.电影信息爬虫 文章链接 (斐波那契小李)
Github·ScrapyDouban (baabaaox)
Douyu_Live_Subscribe 斗鱼.直播间订阅数爬虫 Github·DouyuSpider (danzhewuju)
DuoWan_LPL_Match_Info 多玩游戏.LPL实时比赛信息爬虫 Github·Reptile (librauee)
Dytt8_Movie_Info 电影天堂.电影信息爬虫 Github·spider_python (xingag)
Jd_Goods_Info 京东.商品信息爬虫 Github·Python3Webcrawler (mochazi)
Lagou_Job_Info 拉勾网.工作信息爬虫 Github·JobSpiders (wqh0109663)
Github·Reptile (librauee)
Github·spider_python (xingag)
Maoyan_Movie_Info 猫眼.电影票房爬虫 文章链接 (斐波那契小李)
Maoyan_Movie_Top_100 猫眼.电影TOP100爬虫 Github·DJH-Spider (jasonhavenD)
N163_Book_List 网易云阅读.图书列表爬虫 Github·Reptile (librauee)
N163_Book_Info 网易云阅读.图书爬虫 Github·Reptile (librauee)
N163_Music_Comment 网易云音乐.音乐评论爬虫 Github·Reptile (librauee)
N51job_Job_Info 前程无忧.工作信息爬虫 Github·JobSpiders (wqh0109663)
NowCoder_Interview_Experience 牛客网.面经爬虫 Github·Reptile (librauee)
QQ_Video_Barrage 腾讯视频.视频弹幕爬虫 Github·Reptile (librauee)
Shixiseng_Job_Info 实习生.工作信息爬虫 文章链接 (斐波那契小李)
Toutiao_Search_List 今日头条·头条搜索爬虫 Giuthub·TTBot (01ly)
Toutiao_News_List 今日头条·新闻列表爬虫(45个类别) Giuthub·TTBot (01ly)
Github·TouTiaoNews (LeoLin9527)
Toutiao_User_Info 今日头条·账号信息爬虫 Giuthub·TTBot (01ly)
Toutiao_User_Post 今日头条·账号发布文章爬虫 Giuthub·TTBot (01ly)
Toutiao_User_Video 今日头条·账号发布视频爬虫 Giuthub·TTBot (01ly)
WeChat_Account_Info 微信公众号.公众号信息爬虫 Github·wechat-spider (striver-ing)
WeChat_Article_List 微信公众号.公众号文章列表爬虫 Github·wechat-spider (striver-ing)
Github·wechat-spider (bowenpay)
WeChat_Article_Info 微信公众号.公众号文章信息爬虫 Github·wechat-spider (striver-ing)
Github·wechat-spider (bowenpay)
WeChat_Article_Comment 微信公众号.公众号文章评论爬虫 Github·wechat-spider (striver-ing)
Weibo_User_Info 微博.账号信息爬虫 Github·WeiboSpider (nghuyong)
Weibo_User_Post 微博.账号发布推文爬虫 Github·WeiboSpider (nghuyong)
Weibo_Social_Network 微博.账号社交关系爬虫 Github·WeiboSpider (nghuyong)
Weibo_Post_Comment 微博.微博评论爬虫 Github·WeiboSpider (nghuyong)
Weibo_Post_By_Keyword 微博.基于关键词和时间段的微博爬虫 Github·WeiboSpider (nghuyong)
Youdao_Translate 有道翻译.翻译爬虫 文章链接 (斐波那契小李)
Github·Python3Webcrawler (mochazi)
Zhaopin_Job_Info 智联招聘.工作信息爬虫 Github·JobSpiders (wqh0109663)
Zhihu_User_Info 知乎.用户信息爬虫 Github·zhihu_spider (LiuRoy)
Zhipin_Job_Info Boss直聘.工作信息爬虫 Github·spider_python (xingag)

爬虫列表顺序 / 爬虫命名规则:与“合集设计的爬虫列表”的命名规则相同。

三、免责声明

(一)针对合集设计的爬虫 (“合集设计的爬虫列表”中的爬虫)

1. 所有本合集设计的爬虫均仅可用于研究和教学用途,不得用于任何商业用途。使用者如将任何本合集设计的爬虫应用于商业用途,则由使用者自行衡量其合法性,并承担相关的法律责任。

2. 所有本合集设计的爬虫均作出了如下限制:

  • 严格控制请求频率;
  • 严格限制仅采集公开、没有被标注为不希望他人获取的数据;
  • 严格模糊处理与研究和教学无关的个人数据(如姓名、电话、地址等),使其只能用于区分,而无实际意义(采用哈希方法);

使用者如通过修改爬虫代码(修改爬虫类的running方法)的方法以绕过以上限制,则由使用者自行并承担相关的法律责任。

3. 使用者如在本合集爬虫的基础上重新设计爬虫(即修改或重写爬虫的running方法),则重新设计的爬虫与本合集无关,由使用者自行承担相关的法律责任。

4. 任何单位或个人认为本合集的任何爬虫可能涉嫌侵犯其权益,可联系本合集作者,本合集将在24小时内移除该爬虫。

(二)针对合集收录的爬虫 (“合集收录的爬虫列表”中的爬虫)

1. 本合集收录的第三方爬虫均系他人制作或提供,您可能从该爬虫的网页上获得目标爬虫,本合集对其合法性概不负责,亦不承担任何法律责任。

2. 本合集将收录的部分第三方爬虫改写为本合集的统一格式(即“合集设计的爬虫”的格式),以方便使用者调用,这些被改写的新爬虫将适用于“针对合集设计的爬虫”的免责声明;同时,“合集收录的爬虫列表”中的第三方爬虫仍适用于“针对合集收录的爬虫”的免责声明。

3. 任何单位或个人认为本合集链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,可联系本合集作者,本合集将尽快断开相关链接内容。

四、项目计划

(一)项目计划

1. 计划完成的项目更新

  • 在crawlertool爬虫工具模块中,实现将统一的爬虫返回数据格式(字典列表)存储到不同位置的工具函数
  • 在crawlertool爬虫工具模块中,优化对读取、写入MySQL数据的函数的优化
  • 整理CxSpider模块并发布到pypi
  • 实现爬虫调用的命令行参数支持
  • 实现通过不需要本地Python环境的可执行文件运行爬虫(按爬虫分别封装/封装通用的爬虫调用器)
  • 更新webdriver的管理方式,不再需要用户再管理缓存路径

2. 计划新增的爬虫

  • 大众点评商铺数据:商铺名称、商铺地址、联系方式、五星好评、人均、环境、音效、服务(@MrLuoj
  • WeGame:指定名称召唤师的匹配或排位记录(@ixuhan
  • Twitter:目标用户发布的图片及视频

(二)项目历史

2021.01.02 整体整理、更新项目结构

2020.11.01 达到100☆

2020.06.09 迁移、合并合集作者的另外几个爬虫项目

五、项目作者

长行 · Github · CSDN · LeetCode · [email protected]

诚邀对爬虫感兴趣的朋友共同维护此项目,有意者请联系作者的Github账号或邮箱!

cxspider's People

Contributors

beiyuouo avatar changxingjiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cxspider's Issues

一点修改

尝试了新的css selector,解决定位问题
注释掉了SELECTOR_TEST
外部的selector为
SELECTOR_OUTER = "main > div > div > div > div > div > div > div:nth-child(2) > div > div > section > div > div"
正则的group函数可能有NoneType无法调用的ERROR,加上continue就可以用啦
感谢老哥的提供,辛苦!!!

推特可以爬取所发的图片和视频吗?

大佬你好,感谢你的开源项目;有个疑问,我目前针对推特用户可以抓取其所发推特的文本内容,但是无法下载图片和视频;除了申请API之外,是否有其他的更好的方式,谢谢!

求救!!!!!!!!!急!!!!!!!

代码完全没改动直接跑的

`# coding:utf-8

"""
Twitter账号推文爬虫

@update: 2020.10.23
"""

import datetime as dt
import re
import time
from urllib import parse

import crawlertool as tool
from Selenium4R import Chrome

class SpiderTwitterAccountPost(tool.abc.SingleSpider):
"""
Twitter账号推文爬虫
"""

def __init__(self, driver):
    self.driver = driver

    # 爬虫实例的变量
    self.user_name = None

@staticmethod
def get_twitter_user_name(page_url: str) -> str:
    """提取Twitter的账号用户名称

    主要用于从Twitter任意账号页的Url中提取账号用户名称

    :param page_url: Twitter任意账号页的Url
    :return: Twitter账号用户名称
    """
    if pattern := re.search(r"(?<=twitter.com/)[^/]+", page_url):
        return pattern.group()

def running(self, user_name: str, since_date, until_date):
    """执行Twitter账号推文爬虫

    :param user_name: Facebook账号主页名称(可以通过get_facebook_user_name获取)
    :param since_date: 抓取时间范围的右侧边界(最早日期)
    :param until_date: 抓取时间范围的左侧边界(最晚日期)
    :return: 推文信息列表
    """

    self.user_name = user_name

    item_list = []

    # 生成请求的Url
    query_sentence = []
    query_sentence.append("from:%s" % user_name)  # 搜索目标用户发布的推文
    query_sentence.append("-filter:retweets")  # 过滤到所有转推的推文
    if since_date is not None:
        query_sentence.append("since:%s" % str(since_date))  # 设置开始时间
        query_sentence.append("until:%s" % str(until_date))  # 设置结束时间
    query = " ".join(query_sentence)  # 计算q(query)参数的值
    params = {
        "q": query,
        "f": "live"
    }
    actual_url = "https://twitter.com/search?" + parse.urlencode(params)
    self.console("实际请求Url:" + actual_url)

    # 打开目标Url
    self.driver.get(actual_url)
    time.sleep(3)

    # 判断是否该账号在指定时间范围内没有发文
    label_test = self.driver.find_element_by_css_selector("main > div > div > div > div:nth-child(1) > div > div:nth-child(2) > div > div")
    if "你输入的词没有找到任何结果" in label_test.text:
        return item_list

    # 定位标题外层标签
    label_outer = self.driver.find_element_by_css_selector(
        "main > div > div > div > div:nth-child(1) > div > div:nth-child(2) > div > div > section > div > div")
    self.driver.execute_script("arguments[0].id = 'outer';", label_outer)  # 设置标题外层标签的ID

    # 循环遍历外层标签
    tweet_id_set = set()
    for _ in range(1000):
        last_label_tweet = None
        for label_tweet in label_outer.find_elements_by_xpath('//*[@id="outer"]/div'):  # 定位到推文标签

            item = {}

            # 读取推文ID
            if label := label_tweet.find_element_by_css_selector(
                    "article > div > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div > div > div:nth-child(1) > a"):
                if pattern := re.search("[0-9]+$", label.get_attribute("href")):
                    item["tweet_id"] = pattern.group()
            if "tweet_id" not in item:
                self.log("账号名称:" + user_name + "|未找到推文ID标签(第" + str(len(item_list)) + "条推文)")
                continue

            # 判断推文是否已被抓取(若未被抓取则解析推文)
            if item["tweet_id"] in tweet_id_set:
                continue

            tweet_id_set.add(item["tweet_id"])
            last_label_tweet = label_tweet

            # 解析推文发布时间
            if label := label_tweet.find_element_by_css_selector(
                    "article > div > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div > div > div:nth-child(1) > a > time"):
                item["time"] = label.get_attribute("datetime").replace("T", " ").replace(".000Z", "")

            # 解析推文内容
            if label := label_tweet.find_element_by_css_selector(
                    "article > div > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(1)"):
                item["text"] = label.text

            item["replies"] = 0  # 推文回复数
            item["retweets"] = 0  # 推文转推数
            item["likes"] = 0  # 推文喜欢数

            # 定位到推文反馈数据标签
            if label := label_tweet.find_element_by_css_selector(
                    "article > div > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div[role='group']"):
                if text := label.get_attribute("aria-label"):
                    # 解析推文反馈数据
                    for feedback_item in text.split(","):
                        if "回复" in feedback_item:
                            if pattern := re.search("[0-9]+", feedback_item):
                                item["replies"] = int(pattern.group())
                        if "转推" in feedback_item:
                            if pattern := re.search("[0-9]+", feedback_item):
                                item["retweets"] = int(pattern.group())
                        if "喜欢" in feedback_item:
                            if pattern := re.search("[0-9]+", feedback_item):
                                item["likes"] = int(pattern.group())

            item_list.append(item)

        # 向下滚动到最下面的一条推文
        if last_label_tweet is not None:
            self.driver.execute_script("arguments[0].scrollIntoView();", last_label_tweet)  # 滑动到推文标签
            self.console("执行一次向下翻页...")
            time.sleep(3)
        else:
            break

    return item_list

------------------- 单元测试 -------------------

if name == "main":
driver = Chrome(cache_path=r"E:\Temp")
print(SpiderTwitterAccountPost(driver).running(
user_name=SpiderTwitterAccountPost.get_twitter_user_name("https://twitter.com/zaobaosg"),
since_date=dt.date(2021, 10, 1),
until_date=dt.date(2021, 10, 7)
))`

报错
报错2
报错3

然后报错...emmmm..
麻烦大佬QwQ

老哥您好

就针对脸书那个爬虫,配置文件需要配置什么,我看要事先从数据库读取一些链接吗,不是很懂学生小白

大神,请问WeGame里召唤师列表sign怎么生成的啊

不同参数请求签名都不一样,请问是生成的啊?
想抓取云顶之弈的大神对战数据,掌上Wegame里面带cookie就能抓,但是抓个几百条就出现”访问频率限制"了😂
抓包掌上英雄联盟,卡在sign参数上
大神 能解解惑吗 非常感谢🙏

使用twitter爬虫程序遇到的几个问题及解决方法

问题

  1. 遇到了与Twitter推文爬虫,无法爬部分用户相同的问题
  2. 如果捕获的推文为主页作者的回复,则捕获不到回复的具体内容

解决方法

  1. 在Line 125底下,加上
if not isinstance(text, bool):
  1. 在解析推文内容时,尝试再获取一个标签的内容。在Line115行下添加:
if label := label_tweet.find_element_by_css_selector(
    "article > div > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2)"):
item["text"] += ' | ' + label.text

Python初学者,有问题麻烦指出!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.