requests库获取网页的方法,使用requests库抓取数据
网络爬虫的海盗是网络爬虫的大小。
抓取网页,播放网页:规模小,数据量小,抓取速度不灵敏;请求库
抓取网站抓取系列网站:规模中等,数据量大,抓取速度敏感;剪贴簿图书馆
抓取全网:大规模,搜索引擎,抓取速度是关键;定制开发
网络爬虫引发的问题
网络爬虫的骚扰:受限于编写水平和目的,网络爬虫会给Web服务器带来巨大的资源开销。
网络爬虫的法律风险:服务器上的数据属于财产权,网络爬虫获取数据后获取利润会带来法律风险。
网络爬虫泄露隐私:网络爬虫可能有能力突破简单的访问控制,获取受保护的数据,泄露个人隐私。
网络爬虫的限制
来源:判断用户代理的限制
检查访问HTTP协议头的UserAgent域,只响应浏览器或友好爬虫的访问。
公告:Robots协议通知所有爬虫它们的爬行策略,并要求它们遵守Robots协议。
Robots Exclusion标准网络爬虫排除标准功能:网站告诉网络爬虫哪些页面可以抓取,哪些不可以。
表单:网站根目录下的robots.txt文件
Robots协议的基本语法:
https://www.jd.com/robots.txt
用户代理:* #评论:
不允许:/?* *代表所有
不允许:/pop/*。html/代表根目录
机器人协议的符合性
网络爬虫使用Robots协议:自动或手动识别robots.txt,然后抓取内容。
绑定:Robots协议是建议的,但不是绑定的。网络爬虫可以不遵守,但是有法律风险。
请求库的爬网实例示例1:爬网导入请求URL= 3359 item.jd.com/100004770249.html try:kv={ user-agent : Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,like Gecko)Chrome/88 . 0 . 4324 . 150 Safari/537.36 } r=requests . get(URL,Headers=kv)r . raise _ for _ status()r . encoding=r . apparent _ encoding print(r . text[:1000])except:print( crawling failure )示例2:抓取亚马逊产品页面的导入请求URL= 3359www.amazon.cn/dp/B01MYH8A99 try:kv={ user-agent : Mozilla/Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/88 . 0 . 4324 . 150 Safari/537.36 } r=requests . get(URL,Headers=kv)r . raise _ for _ status()r . encoding=r . apparent _ encoding print(r . text[:1000])除:print(抓取失败)例3:百度360搜索关键词提交
百度的关键词界面:http://www.baidu.com/s? wd=关键词
30的关键词界面:http://www.so.com/s? q=关键词
import requestsurl= https://www . Baidu . com/s try:kv={ wd : python } # kv={ User-Agent : Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/88 . 0 . 4324 . 150 Safari/537.36 } r=requests . get(URL,Params=kv)r . raise _ for _ status()print(r . request . URL)len(r . text))除:print(抓取失败)实例4:网络图片的爬取和存储网页图片链接格式:http://www.example.com/picture.jpg
图片抓取代码
导入请求import osurl= https://img-prod-CMS-rt-Microsoft-com . akamaized . net/CMS/API/am/image file data/re 4 wwtv?ver=1428 path= E://py study//1 . jpg 如果不是OS . path . exists(path):kv={ User-Agent : Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,like Gecko)Chrome/88 . 0 . 4324 . 150 Safari/537.36 } r=requests . get(URL,Heads=kv)r . raise _ for _ status()with open(path, WB )as f:f . write(r . content)# r . content表示返回内容的二进制形式,F.close() #图片是以二进制形式存储的打印(文件保存成功)else: print(文件已经
Ip138 IP查询:http://m.ip138.com/ip.asp? IP=IP地址
进口申请http://m.ip138.com/ip.asp?IP= r=请求。获取(URL 202。204 .80 .112 )r . raise _ for _ status()r . encoding=r . apparent _ encoding print(r . text[:1000])
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。