分享一次实用的爬虫经验

Python进阶者
• 阅读 625

大家好,我是Python进阶者。

前言

前几天铂金群有个叫【艾米】的粉丝在问了一道关于Python网络爬虫的问题,如下图所示。

分享一次实用的爬虫经验

不得不说这个粉丝的提问很详细,也十分的用心,给他点赞,如果大家日后提问都可以这样的话,想必可以节约很多沟通时间成本。

其实他抓取的网站是爱企查,类似企查查那种。

分享一次实用的爬虫经验

一、思路

一开始我以为很简单,我照着他给的网站,然后一顿抓包操作,到头来竟然没有找到响应数据,不论是在ALL还是XHR里边都没有找到任何符合要求的数据,真是纳闷。讲到这里,【杯酒】大佬一开始也放大招,吓得我不敢说话。

分享一次实用的爬虫经验

其实是想复杂了,一会儿你就知道了。

分享一次实用的爬虫经验

怀着一颗学习的心,我看了杯酒的代码,发现他构造的URL中有下图这个:

分享一次实用的爬虫经验

然后我再去网页中去找这个URL,可是这个URL在原网页中根本就找不到???这就离谱了,总不能空穴来风吧,事出必有因!

二、分析

原来这里有个小技巧,有图有真相。

分享一次实用的爬虫经验

之后根据抓包情况,就可以看到数据了。

分享一次实用的爬虫经验

在里边可以看到数据:

分享一次实用的爬虫经验

这里【杯酒】大佬查询的关键词是:数据,所以得到了好几页数据,而我和【艾米】都是直接查的:上海手术器械厂,这个只有一页,不太好观察规律,所以一直卡住了。

分享一次实用的爬虫经验

之后将得到的代码中的URL的关键词,改为:上海手术器械厂,就可以顺利的得到数据,是不是很神奇呢?

三、代码

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

# -*- coding: utf-8 -*-
import requests
import user_agent
from urllib import parse


def search(key_word):
    for page_num in range(1, 2):
        url = f'https://aiqicha.baidu.com/s/advanceFilterAjax?q={parse.quote(key_word)}&t=&p={str(page_num)}&s=10&o=0&f=%7B%7D'
        headers = {
            'User-Agent': user_agent.generate_user_agent(),
            'Referer': 'https://aiqicha.baidu.com/s?q=%E6%95%B0%E6%8D%AE&t=0',
        }
        print(url)
        response = requests.get(url=url, headers=headers)
        print(requests)
        print(response.json())
        # break


if __name__ == '__main__':
    search('上海手术器械厂')

只需要将关键词换成你自己想要搜索的就可以了。

下图是运行的结果:

分享一次实用的爬虫经验

分享一次实用的爬虫经验

下图是原网页的截图,可以看到数据可以对的上:

分享一次实用的爬虫经验

四、总结

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

最后感谢【艾米】提问,感谢【杯酒】大佬解惑,感谢小编精心整理,也感谢【磐奚鸟】积极尝试。

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Python进阶者 Python进阶者
2年前
盘点3种Python网络爬虫过程中的中文乱码的处理方法
大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,感兴趣的小伙伴可以前往:,这里再次给大家祭出网络爬虫过程中三种中文乱码的处理方案,希望对大家的学习有所帮助。前言前几天有个粉丝在Python交流群里问了一道关于使用Python网络爬虫过程中中文乱码的问题,如下图所示。看上去确实头大,对于爬虫初学者来说,这个乱码摆在自己面前,犹如拦路虎一
Python进阶者 Python进阶者
2年前
盘点CSV文件在Excel中打开后乱码问题的两种处理方法
大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,阅读量还不错,感兴趣的小伙伴可以前往:,,今天基于粉丝提问,给大家介绍CSV文件在Excel中打开后乱码问题的两种处理方法,希望对大家的学习有所帮助。前言前几天有个叫【RSL】的粉丝在Python交流群里问了一道关于CSV文件在Excel中打开后乱码的问题,如下图所示。在Excel中直接
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Python进阶者 Python进阶者
1年前
练习爬虫,我想问一下这个xpath语句为啥找不到元素,感谢大佬!
大家好,我是皮皮。一、前言前几天在Python钻石交流群【萤火】问了一个Python网络爬虫的问题,下图是截图:下图是报错截图:二、实现过程这里【error】给了一个代码,如下所示,满足粉丝的需求:用selenium没找到的话,大概率是网页还没渲染出来,代码就运行到了抓取规则,所以抓不到。其实他的匹配规则是可以拿到数据的,只不过用jupyter运行sel
Python进阶者 Python进阶者
2年前
盘点一个Python网络爬虫过程中中文乱码的问题
大家好,我是皮皮。一、前言前几天在Python黄金交流群有个叫【Mt.Everest】的粉丝问了一个关于Python网络爬虫过程中中文乱码的问题,这里拿出来给大家分享下,一起学习。二、解决过程这个问题其实很早之前,我就写过相关文章,而且屡试不爽。【Python进阶者】解答这里给出了两个思路,照着这个思路去的话,问题不大。事实上并不巧,还是翻车了。【黑
Python进阶者 Python进阶者
1年前
盘点一个Python网络爬虫+正则表达式处理案例
大家好,我是Python进阶者。一、前言前几天在Python白银交流群【鑫】问了一个Python网络爬虫的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/2623
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Python进阶者 Python进阶者
2星期前
盘点3种Python网络爬虫过程中的中文乱码的处理方法
大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,感兴趣的小伙伴可以前往:,这里再次给大家祭出网络爬虫过程中三种中文乱码的处理方案,希望对大家的学习有所帮助。前言前几天有个粉丝在Python交流群里问了一道关于使用Python网络爬虫过
Python进阶者 Python进阶者
1星期前
想获取JS加载网页的源网页的源码,不想获取JS加载后的数据
大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【梦】问了一个Python网络爬虫的问题,这个网站不知道使用了什么反爬手段,都获取不到页面数据。原来的那篇文章竟然爆文了,突破了1.5w的阅读量,欢迎大家围观。不过这里粉丝的需求有点奇怪