您当前的位置:首页 > 电脑百科 > 数据库 > 百科

requests库请求获取不到数据怎么办?不妨试试看这种妙法

时间:2022-02-08 09:29:13  来源:  作者:CDA数据分析师

作者:Python进阶者

来源:Python爬虫与数据挖掘

一、思路

很多网站都对requests反爬了,这种时候,一般有两个选择,要不就找js接口,要不就用requests_html等其他工具,这里他使用了后者requests_html工具。

二、分析

一开始直接使用requests进行请求,发现得到的响应数据并不对,和源码相差万里,然后就考虑到网站应该是有反爬的,尝试加了一些ua,headers还是不行,于是乎想着使用requests_html工具小试牛刀。

requests库请求获取不到数据怎么办?不妨试试看这种妙法

 

三、代码

下面就奉上本次爬虫的代码,欢迎大家积极尝试。

# 作者:@有点意思
import re
import requests_html


def 抓取源码(url):
    user_agent = requests_html.user_agent()
    session = requests_html.HTMLSession()    
    headers = {
        "cookie": "BAIDUID=D664B1FA319D687E8EE0F9E8D643780A:FG=1; BIDUPSID=D664B1FA319D687E8EE0F9E8D643780A; PSTM=1620719199; __yjs_duid=1_c6692c2be6c2ffe04f29102282538ba81620719216498; BDUSS=dzdjlXdGsyTkhYdUFGeWFZOH40SmNWSkpDeUlPYS1UbU4xYklkYnFPY0Z5NTFoRVFBQUFBJCQAAAAAAAAAAAEAAAAmfcsXTUFPQlVDSEkyMDExAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU-dmEFPnZhWD; BDUSS_BFESS=dzdjlXdGsyTkhYdUFGeWFZOH40SmNWSkpDeUlPYS1UbU4xYklkYnFPY0Z5NTFoRVFBQUFBJCQAAAAAAAAAAAEAAAAmfcsXTUFPQlVDSEkyMDExAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU-dmEFPnZhWD; BAIDUID_BFESS=2C6304C3307DE9DB6DD487CC5C7C2DD3:FG=1; BDPPN=4464e3ebfa50be9e28b4d1c23e380603; _j54_6ae_=xlTM-TogKuTwIujX2VajREagog-ZV6RQfAmd; log_guid=0dad4e957fd92b3d86f994e0a93cee98; _j47_ka8_=57; __yjs_st=2_NzJkNjAyZjJmMmE1MTFmOTM1YWFlOWQwZWFlMjFkMTNmZDA0ZTlkNjRmNmUwM2NlZTQ4Y2Y4ZGM5ZjBjMDFlN2E0NzdiNDk4ZjdlNThmMmI4NjkxNDRjYmQ0MjZhMTZkMWYzMTBiYjUyMzJlMDdhMWQwZmQ2YjAwOWNiMTA5ZmJmNGNmNmE3OTk1ODZmZjkyMGQzZGZmNDdmZDJmZGU1MjE3MjgwMWRkNWYyMDlhNWNiYWM3YjNkMWI1MzU5NWM2MjEzYWMxODUyNDcyZDdjYTMzZDRiY2FlYTNmYmRiN2JkYzU1MWZiNWM3OTc4ZjExYmYwNGNlNTA5MjhjMWQ4Yl83XzEyZjk1ZDEw; Hm_lvt_ad52b306e1ae4557f5d3534cce8f8bbf=1637699929,1637713962,1637849108; Hm_lpvt_ad52b306e1ae4557f5d3534cce8f8bbf=1637849108; ab_sr=1.0.1_OTBkZjg4MzZjYjFhMWMyODgxZTM4MDZiNGViYTRkYjFhNDFiNWU1NWUyZjU4NDI3YjVjYTM1YTBiYTc1M2Y0ZTA5ZTI5YTZjNDQ4ZGFjMzE2NTU5ZTkwMWFkYWI0OGE5Nzc4MWFiOGU5N2VmNzJjMDdiyTk4NjYyY2E1NzQ4MzIzMDVmOTc2MDZjOTA0NTYyODNjNmUxNjAwNzlmNThlYQ==; _s53_d91_=93c39820170a0a5e748e1ac9ecc79371df45a908d7031a5e0e6df033fcc8068df8a85a45f59cb9faa0f164dd33ed0c72405da53b835d694f9513b3e1cb6e4a96799af3f84bd42f912f1c8ae0446a53f275c4e5a7894aeb6c9857d9df8629680517ba9801c04e1c714b46f860c3cbb2ecb1a3847388bf1b3c4bcbbd8119b62261a0a625c3c8b053758aa8fe29ec0f7fffe3b49bb0f77fea4df98a0f472d86bde82df374a7e5fb907b27d3187299c8b7ef65e28b9e042741e29587ab5829dfbafca8de50eb8162607986625ecd31d16a1f; _y18_s21_=4c8c0b95; RT="z=1&dm=baidu.com&si=nm8z611r2fr&ss=kwf1266k&sl=2&tt=xuh&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=mmj&ul=ilwy"",
        "User-Agent": user_agent
    } 
    
    r = session.get(url, headers=headers)
    html = r.html.html
    
    return html  # 注意!这里抓取到的源码和手动打开的页面源码不一样


def 解密(列表):  # unicode转化成汉字
    print(列表)
    return [eval(i) for i in 列表]


def 解析页面(html):
    公司列表 = re.findall(r'titleName":(".*?")', html, re.DOTALL)
    # 注意!此处编写正则时,要匹配的源码是函数“抓取源码”得到的html
    # 此处正则匹配时一定要把引号带上!否则eval会报错!
    return 解密(公司列表)    


if __name__ == "__main__":
    # 不用抓包,这里的url就是用户搜索时的页面
    url = "https://某某查网站/s?q=%E4%B8%8A%E6%B5%B7%E5%99%A8%E6%A2%B0%E5%8E%82&t=0"
    html = 抓取源码(url)
    print(html)
    公司列表 = 解析页面(html)
    print(公司列表)

这里大家可能觉得很奇怪,竟然有中文的函数命名和变量命名,这里是应原作者的要求,所以未做修改,但是不影响程序执行效果。

程序运行之后,可以看到目标字段都可以抓下来。

requests库请求获取不到数据怎么办?不妨试试看这种妙法

 

四、总结

我是Python进阶者。本文基于粉丝提问,针对一次有趣的爬虫经历,分享一个实用的爬虫经验给大家。下次再遇到类似这种使用requests库无法抓取的网页,或者看不到包的网页,不妨试试看文中的requests_html方法,说不定有妙用噢!

针对本文中的网页,除了文章这种“投机取巧”方法外,用selenium抓取也是可行的,速度慢一些,但是可以满足要求。小编相信肯定还有其他的方法的,也欢迎大家在评论区谏言。



Tags:requests   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:Python进阶者来源:Python爬虫与数据挖掘一、思路很多网站都对requests反爬了,这种时候,一般有两个选择,要不就找js接口,要不就用requests_html等其他工具,这里他使用了后者req...【详细内容】
2022-02-08  Tags: requests  点击:(6)  评论:(0)  加入收藏
requests一、简介使用 python 做自动化接口测试需要用代码发送 http 请求。requests 是 Python 语言里网络请求库中最好用的,没有之一。requests 库有完善详尽的中文版官方...【详细内容】
2021-12-01  Tags: requests  点击:(40)  评论:(0)  加入收藏
前言接口测试是我们在测试工作中经常见到的,我们工作中常用到的接口工具有jmeter,postman,soupUI等工具,那么在通过代码做接口测试呢?或者通过代码的方式做接口自动化呢? requests...【详细内容】
2021-07-23  Tags: requests  点击:(105)  评论:(0)  加入收藏
最近有些朋友看完小帅b的文章之后把小帅b的表情包都偷了还在我的微信疯狂发表情包嘚瑟我就呵呵了 只能说一句盘他还有一些朋友看完文章不点好看还来催更小帅b也只能说一句继...【详细内容】
2020-06-21  Tags: requests  点击:(91)  评论:(0)  加入收藏
作者:kingname我做了一个垃圾信息过滤的 HTTP 接口。现在有一千万条消息需要经过这个接口进行垃圾检测。 一开始我的代码是这样的:import requestsmessages = ['第一条&#...【详细内容】
2020-03-16  Tags: requests  点击:(68)  评论:(0)  加入收藏
▌简易百科推荐
作者:Python进阶者来源:Python爬虫与数据挖掘一、思路很多网站都对requests反爬了,这种时候,一般有两个选择,要不就找js接口,要不就用requests_html等其他工具,这里他使用了后者req...【详细内容】
2022-02-08  CDA数据分析师    Tags:requests   点击:(6)  评论:(0)  加入收藏
一、摘要本文主要以 Mysql 数据库为基础,对常用 SQL 语句进行一次深度总结,由于篇幅较长,难免会有些遗漏的地方,欢迎网友批评指出!具体内容主要有以下几个部分: 库操作 表操作 数...【详细内容】
2022-02-05  DNF搬砖摸金达人    Tags:SQL语句   点击:(13)  评论:(0)  加入收藏
每天亿级数据量的日志清洗系统,从Kafka不停消费各种日志数据,然后对日志格式进行各种清洗,如对敏感信息字段(姓名、手机号、身份证号)进行脱敏,再把清洗后数据给其它系统,如推荐系...【详细内容】
2022-02-03  JavaEdge    Tags:数据清洗   点击:(10)  评论:(0)  加入收藏
1. 请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?SQL 标准定义的四个隔离级别为:read uncommited :读到未提交数据read committed:脏读,不可重复读...【详细内容】
2022-01-27  源鲲    Tags:数据库   点击:(19)  评论:(0)  加入收藏
基本上明白了这个小伙伴的意思,于是我自己也写了个测试案例,重新整理了今天这篇文章,希望和小伙伴们一起探讨这个问题,也欢迎小伙伴们提出更好的方案。1. 思路分析批量插入这个...【详细内容】
2022-01-24  Java技术那些事    Tags:数据   点击:(16)  评论:(0)  加入收藏
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。来自于2011 年在纳斯达克上市的俄罗斯本土搜索引擎企业Yandex公司,诞生之初就是为了服务Yandex公司自家的W...【详细内容】
2022-01-18  软件架构    Tags:IDEA   点击:(14)  评论:(0)  加入收藏
1.ExecutorExecutor 是 MyBatis 的核心接口之一,其中定义了数据库操作的基本方法。在实际应用中经常涉及的 SqISession 接口的功能,都是基于 Executor 接口实现的。 BaseExec...【详细内容】
2022-01-13  java成神之路    Tags:MyBatis   点击:(20)  评论:(0)  加入收藏
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。面试开始,直入正题。面试官:小伙子,看到你的简历上面写了项目中...【详细内容】
2022-01-12  一灯架构    Tags:分库分表   点击:(39)  评论:(0)  加入收藏
TeamDesigner,一款免费在线的数据库表设计工具,适合后端程序员。类似PownerDesigner的功能,可用于设计mysql,oracle的表结构。地址:http://101.200.59.11/主要功能1、支持Mysql,Or...【详细内容】
2022-01-11  互联网前行者90    Tags:数据库   点击:(39)  评论:(0)  加入收藏
前言上篇文章简单介绍canal概念,本文结合常见的缓存业务去讲解canal使用。在实际开发过程中,通常都会把数据往redis缓存中保存一份,做下简单的查询优化。如果这时候数据库数据...【详细内容】
2022-01-04  仰望四十五度的光    Tags:数据同步   点击:(38)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条