python爬虫求一个只用requests库和beautifulsoup库抓取淘宝目录页面内容的框架。。自己抓不出来。绝望。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫求一个只用requests库和beautifulsoup库抓取淘宝目录页面内容的框架。。自己抓不出来。绝望。相关的知识,希望对你有一定的参考价值。

如果方便的话,能不能写一下步骤的大概意思。。。现在写的一直重复抓同一个东西。。看了人家的还是迷迷糊糊的。。如果淘宝这些库不能解决的话。。抓个类似的。网站目录也行。。就是想练习一下,类似淘宝这种html页面比较复杂的这种。

参考技术A

    可以将网页下载下来先练习 BeautifulSoup 的解析。

    requests  请求也是一样先各个击破的学习。

    淘宝的请求回来的页面 html 没有目录数据,是因为有可能他们的页面渲染是通过 JS 来渲染的,所以你只用 BeautifulSoup 是不行的。需要使用其他支持 JS 的库。

追问

如果爬京东这种,爬取那些职业类型,薪水什么的,只用这两个,应该怎么爬,之前爬了一次,但是一直在单独循环爬爬取到的第一个。。。

追答

尽量模拟真实用户的请求行为吧。毕竟它总会响应用户请求的。
比如我上面说的尝试一下一些支持 JS 的库。

参考技术B 我最近在写淘宝爬虫,只用requests库:登录目前解决了,基本100%登录。
就是爬取pc网页时太频繁会出现滑块验证码,我试了好多次最多爬到2000条数据,只用requests库很难解决淘宝的滑块验证!
爬取淘宝遇到的问题太多了,各种反扒。。。。
教程这几天就写出来了,你可以关注我的vx公号:「裸睡的猪」,回复:淘宝 获取教程
参考技术C 京东比较好爬,只要有个user-agent的请求头就能爬取,淘宝的话比较难,因为反爬做的很好追问

可以写个爬京东的例子么。想看一下示范。非常感谢,自己琢磨不出来了。。绝望。。

追答

嗯⊙∀⊙!要不要加个好友讨论一下

追问

好的,感谢大佬!QQ方便么

追答

私信啦

追问

好的,非常感谢

参考技术D 淘宝的话有防采集,你要采集的话第一步要先模拟登录,然后可以通过开发者工具获取请求接口。 第5个回答  2019-03-19 淘宝的话比较难,因为反爬做的很好

requests库和urllib包对比

python中有多种库可以用来处理http请求,比如python的原生库:urllib包、requests类库。urllib和urllib2是相互独立的模块,python3.0以上把urllib和urllib2合并成一个库了,requests库使用了urllib3。requests库的口号是“HTTP For Humans”,为人类使用HTTP而生,用起来不知道要比python原生库好用多少呢,比起urllib包的繁琐,requests库特别简洁和容易理解。话不多说,代码为证~~~

下面我们来分别使用urllib包和requests库写一个get请求,进行一下对比,如下图:

技术图片
#-*- coding:utf8 -*-
import urllib2
import urllib
 
URL_GET = "https://api.douban.com/v2/event/list"
 
def use_params_urllib2():
    #构建请求参数
    params = urllib.urlencode(‘loc‘:‘108288‘,‘day_type‘:‘weekend‘,‘type‘:‘exhibition‘)
    print ‘Request Params:‘
    print params
    #发送请求
    response = urllib2.urlopen(‘?‘.join([URL_GET,‘%s‘])%params)
    #处理响应
    print ‘>>>>>>Response Headers:‘
    print response.info()
    print ‘Status Code:‘
    print response.getcode()
    print‘>>>>>>>Response Body:‘
    print response.read()
    
if __name__ == ‘__main__‘:
    print ‘Use params urllib2:‘
    use_params_urllib2()
技术图片
技术图片
#-*- coding:utf8 -*-
import requests
 
URL_GET = "https://api.douban.com/v2/event/list"
 
def use_params_requests():
    #构建请求参数
    params = ‘loc‘:‘108288‘,‘day_type‘:‘weekend‘,‘type‘:‘exhibition‘
    #发送请求
    response = requests.get(URL_GET,params=params)
    #处理响应
    print ‘>>>>>>Response Headers:‘
    print response.headers
    print ‘>>>>>>Status Code:‘
    print response.status_code
    print‘>>>>>>>Response Body:‘
    print response.text
   
if __name__ == ‘__main__‘:
 
    print ‘Use params requests:‘
    use_params_requests()
技术图片

第一种使用的是urllib包,第二种使用的是requests库,从以下几个方面进行对比:

1)构建参数:在构建请求参数时,第一种需要将请求参数使用urllib库的urlencode方法进行编码预处理,非常麻烦

2)请求方法:发送get请求时,第一种使用的urllib库的urlopen方法打开一个url地址,而第二种直接使用requests库的get方法,与http请求方式是对应的,更加直接、易懂

3)请求数据:第一种按照url格式去拼接一个url字符串,显然非常麻烦,第二种按顺序将get请求的url和参数写好就可以了

4)处理响应:第一种处理消息头部、响应状态码和响应正文时分别使用.info()、.getcode()、.read()方法,第二种使用.headers、.status_code、.text方法,方法名称与功能本身相对应,更方便理解、学习和使用

5)连接方式:看一下返回数据的头信息的“connection”,使用urllib库时,"connection":"close",说明每次请求结束关掉socket通道,而使用requests库使用了urllib3,多次请求重复使用一个socket,"connection":"keep-alive",说明多次请求使用一个连接,消耗更少的资源

6)编码方式:requests库的编码方式Accept-Encoding更全,在此不做举例

由此可见,requests库更容易理解和阅读,符合Python哲学“Readability counts”,可读性很重要~更利于开发人员学习和使用,那就让我们一起开启python-requests库的学习之旅吧~

PS:

1.requests库的官网是http://www.python-requests.org/en/master/,里面有操作文档

2.requests库的作者是一个来自欧洲的爱好摄影的小哥哥,名叫Kenneth Reitz,他的个人网站:https://www.kennethreitz.org/,里面有他的帅照哦哈哈哈

以上是关于python爬虫求一个只用requests库和beautifulsoup库抓取淘宝目录页面内容的框架。。自己抓不出来。绝望。的主要内容,如果未能解决你的问题,请参考以下文章

python-网络爬虫

求编程大佬 Python 爬虫

python爬虫入门---获取某一网站所有超链接

[Python]python爬虫简单试用

Python编程基础之(五)Scrapy爬虫框架

Python3编写网络爬虫04-爬取猫眼电影排行实例