python爬虫实战(一)→requests

现在说起爬虫,大部分人的第一反应就是python爬虫。
那么今天就来说说python爬虫

Requests是使用Apache2 licensed 许可证的HTTP库,用python编写较简洁。
Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。requests会自动实现持久连接keep-alive,较为友好。

① 导入模块

import requests

② 发送请求

url = www.baidu.com
response = requests.get(url=url)

③设置请求头
我们在使用python爬虫过程中,大多数需要伪装成浏览器发送请求

	url= 'xxxxxxxxxxxxxxxxxxxxxxx'
	header = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36',
		'Cookie': 'xxxxxxxxxxxxxxxxxxxx'
	}

④获取响应内容

response = requests.get(url=url,headers=header)
这里,我们可以使用 .content 或者 .text 来获取响应内容

⑤编码解码

我们可以使用 encoding   decode 等方式
也可以使用 json的方式
import json
json.loads(response)

最后我们只要在返回内容里面找到自己想要的数据即可

最够附上实战内容:

    import requests
	import json
	import time

class spider_():
    def __init__(self):
        #影视
        # self.url = 'https://sv.baidu.com/videoui/api/videorec?tab=yingshi&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354614665'
        #音乐
        # self.url = 'https://sv.baidu.com/videoui/api/videorec?tab=yinyue&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354123512'
        #搞笑
        self.url = 'https://sv.baidu.com/videoui/api/videorec?tab=gaoxiao&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354553450'
        #娱乐
        # self.url = 'https://sv.baidu.com/videoui/api/videorec?tab=yule&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354718578'
        #动漫
        # self.url = 'https://sv.baidu.com/videoui/api/videorec?tab=dongman&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354765572'
        #综艺
        # self.url = ' https://sv.baidu.com/videoui/api/videorec?tab=zongyi&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354801895'
        #军事
        # self.url = ' https://sv.baidu.com/videoui/api/videorec?tab=junshi&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354839248'
        #科技
        # self.url = ' https://sv.baidu.com/videoui/api/videorec?tab=keji&act=pcFeed&pd=pc&num=20&shuaxin_id=1589354870549'
        self.header = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
        'tab':'yingshi',
        'act':'pcFeed',
        'pd':'pc',
        'shuaxin_id':'1589334676944',
        'num':'20',
        'cookie':'PSTM=1564311462; BIDUPSID=9478F7985C38E78B92F7AF6BF89EB9D4; MCITY=-%3A; BAIDUID=B22141A6F325C4F908B57B4BFBF91AA1:FG=1; BDUSS=GxoZW9yNkNHNC14V3pPeU5SMjUyTkQxWE5qMXU4b0FCZFduTEJhSXB2Z2xDcmxlRVFBQUFBJCQAAAAAAAAAAAEAAADj43o4YWlyZWFkMTMxNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV9kV4lfZFeN; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; yjs_js_security_passport=71c6112c4a650adf0cbf830b896a17f788cb3776_1589189848_js; cflag=13%3A3; H_PS_PSSID=31358_1420_31325_21126_31253_31463_31228_30823_31163; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; delPer=0; PSINO=2; Hm_lvt_4aadd610dfd2f5972f1efee2653a2bc5=1589246280; COMMON_LID=164cc820a7c5e83078effb0043f75ebc; PC_TAB_LOG=haokan_website_page; Hm_lpvt_4aadd610dfd2f5972f1efee2653a2bc5=1589254822; reptileData=%7B%22data%22%3A%2262e08890e27c44ea563adb1238af2cbb446a5e37376e760d65628066c4605508cbaf1d69bda4c7c207ef6350b3e4ab57ff80e934d947be2a867535ce7e70651e15fde67845472caeadbffee6b481e5e4165a36903f534ce8dfc4392dc2bbf72ab345d1cec944c40ecdf8425250efe5b080014a3d26db3fb6e842594b8de5dbcc882e620ae659aaa3585fecb3d2834979%22%2C%22key_id%22%3A%2230%22%2C%22sign%22%3A%220a4cd7af%22%7D'
    }

def down_videos(self):
    #防止被发现 每爬取20条 等待3秒
    time.sleep(3)
    self.response = requests.get(url=self.url, headers=self.header).content
    self.response = json.loads( self.response)
    self.response_ =  self.response['data']['response']['videos']
    print(self.response_)
    for item in range(1):
        for i in self.response_:
            filename = i['title'] + '.mp4'
            with open(filename, "wb") as f:
                f.write(requests.get(i['play_url']).content)
                print(filename, '下载成功')

if name == ‘main’:
spider_().down_videos()

你可能感兴趣的:(爬虫,数据采集,python,数据挖掘)