爬虫
python爬虫指令
xwnsz
这个作者很懒,什么都没留下…
展开
-
正则表达式在爬虫中的应用
正则最好只用于解析无标签的js部分,不建议解析中文。有标签的还是用xpath和bs4例如解析某一标签,提取出同类标签,此时应该看标签哪部分是固定的,哪部分是批量化的,以及自己要的内容。同时以固定内容作为标签头尾。如下标签进行正则提取<div class="thumb"><a href="/article/124427049" target="_blank"><img src="//pic.qiushibaike.com/system/pictures/12442/12原创 2021-07-28 15:49:43 · 527 阅读 · 0 评论 -
bs4库简述
1.首先用response=requests.get(url=url).content.decode(‘utf-8’)来获得网页源码。要先转为content或text(易乱码)格式才能被bs4解析2.soup=BeautifulSoup(response.‘lxml’)解析源码,解析器为lxml(第三方),还有第一方解析器html.parser。3.辨识html文件的标签和属性和所属文本内容。用下面html文件(部分)演示。<div class="song"> <p>李清照原创 2021-07-28 15:52:36 · 589 阅读 · 0 评论 -
xpath库简述
1.导入xpath的解析库etree: from lxml import etree2.实例化一个etree对象命名为tree,且将被解析的源码加载到该对象中,使用.parse()方法导入html文件 tree = etree.parse(‘文件名’)或者导入requests请求到的页面 tree = etree.HTML(page_text)(只能解析text形式,可用page_text = page_text.text转化)3.对源码内部解析,使用.xpath()方法,返回一个列表,列表元素为原创 2021-07-28 15:54:32 · 742 阅读 · 0 评论 -
session携带cookie
1.创建一个session对象:session = requests.Session()2.在不需要使用cookie处取得cookie:requests.get(…)或requests.post(…),把requests替换为session(cookie就会被存储在session中)3.在需要使用cookie处用session对象替换:requests.get(…)或requests.post(…),把requests替换为session(携带了cookie)...原创 2021-07-28 15:56:10 · 240 阅读 · 0 评论 -
多进程池pool实现异步
首先需要异步进行的那部分封装为一个函数,且有返回值(也可以没有)需要异步处理的数据封装为一个可迭代对象,比如一个列表1.引入进程池模块multiprocessing.dummy对应的pool类:from multiprocessing.dummy import Pool2.实例化一个进程池对象。pool()括号中写入创建进程个数(应大于或等于异步函数个数,小于等于CPU核心数):pool = Pool(4)3.使用pool的map对象将函数和数据写入进程池:a=pool.map(想要异步执行的函数原创 2021-07-28 15:56:41 · 244 阅读 · 0 评论 -
协程asyncio库
什么是协程:在等待一个异步函数执行中,可以挂起去执行另一个,多个异步函数,哪个没有挂起(执行到不需要等待的部分)就执行哪个,直到无序地执行完所有异步函数。多个函数协作完成。导入协程库:import asyncio其下有两个重要的声明:async:用来声明函数是异步函数。只有异步函数才能被挂起去执行其他函数(不用非等他执行完才去执行其他的)await:声明此处挂起。此时将去执行其他异步函数一.基本操作1.使用async声明要运行的函数是异步函数。以async修饰的函数返回值是一个协程对象async原创 2021-10-16 10:56:03 · 230 阅读 · 0 评论 -
异步爬虫库aiohttp
在已获得url列表的情况下,异步请求这些url,则应用aiohttp模块而非requests1.引入aiohttp模块:import aiohttp2.异步使用aiohttp模块下的ClientSession()方法,命名为session,再异步使用session下的get/post方法请求url并命名为res(此处有阻塞,应加await挂起),as下的res后面不能直接跟.text(),所以后面再跟page_text=await res.text()(此处仍需挂起)(还能用text()返回字符串形式原创 2021-07-29 15:30:30 · 252 阅读 · 0 评论 -
selenium库在爬虫中应用
selenuim最初是一个自动化测试工具,在爬虫中使用它是为了解决requests无法直接执行动态加载JavaScript代码的问题。它通过浏览器驱动程序直接驱动浏览器操作,也可以解决一部分反爬虫的问题。注意,selenium必须搭配time库使用。在用selenium做JavaScript渲染时,要用time.sleep()来延缓几秒确保渲染完成。1.引入selenium库下的webdriver类:from selenium import webdriver2.实例化一个浏览器对象命名为bro(这原创 2021-07-29 15:34:06 · 246 阅读 · 0 评论 -
selenuim库规避检测
适用于9x版本谷歌浏览器。添加规则:option = webdriver.ChromeOptions()option.add_argument("--disable-blink-features=AutomationControlled")原创 2021-07-29 15:34:42 · 133 阅读 · 0 评论