课程名称:Scrapy打造搜索引擎(分布式爬虫)
课程章节:.cnblogs模拟登陆
主讲老师:bobby
今天学习的内容包括:.cnblogs模拟登陆
1.Selenium(Web自动化工具)
1.selenium介绍
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
2.安装selenium、undetected-chromedriver
3.使用
# spider运行起来,URL都会从此方法开始 def start_requests(self): # 入口可以模拟登录拿到cookie,selenium控制浏览器会被一些网站识别出来(例如:知乎、拉勾网) # 实例化一个浏览器 import undetected_chromedriver.v2 as uc chrome_driver = r"E:\Python\chromedriver.exe" # 后面讲解selenium的时候会下载chromedriver.exe browser = uc.Chrome(executable_path=chrome_driver) browser.get("https://account.cnblogs.com/signin") # 自动化输入、自动化识别滑动验证码并拖动整个自动化过程 input("回车继续:") # 等待浏览器驱动加载完成 # 手动登录后获取cookie值 cookies = browser.get_cookies() cookie_dict = {} # 将获取的cookie值转变为dict字典类型数据 for cookie in cookies: cookie_dict[cookie['name']] = cookie['value'] # 爬虫的时候不要过快,建议使用debug模式进行运行,否则网站会监测cookie值,然后禁止该cookie for url in self.start_urls: # 将cookie交给scrapy,那么后序的请求会沿用之前请求的cookie值吗? headers = { # headers将访问伪装成浏览器,防止被反爬 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/101.0.4951.64 Mobile Safari/537.36' } yield scrapy.Request(url, cookies=cookie_dict, headers=headers, dont_filter=True)
2.查看博客网新闻具体信息页面时需要事先登录
1.测试——假如未登录,直接查看新闻详情页面会发生什么?
注:user-agent是什么?
3.测试使用
1.运行报错
提示:入口文件中需要加if __name__ == '__main__':
2.jobbole.py代码
3.再次debug