Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行

Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行

  • 基础包含
    • requests
    • pyquery
  • 进入正题

基础包含

这也是我当初第一次学习爬虫时做的练习,感觉给初学者练笔挺不错的。运用的知识也不是太多,只运用了requests库以及pyquery的相关知识,就算是小白花几个小时也完全可以掌握。

requests

requests库相对于我们以前使用的urllib有着更强大的处理网页能力,大部分操作也更加简便。请求一个网页urllib需要:

import urllib.request

response = urllib.request.urlopen('https://www.baidu.com')
print(response.read().decode('utf-8'))

而requests只需要

import requests

response = requests('https://www.baidu.com')
print(response.text)

是不是明显简便了很多。

pyquery

pyquery是python的一种解析库,其他比较强大的解析库还有XPath,Beautiful Soup等,这些都可以用来进行网页解析。详细操作我就不再细说了,初学者可以去官网了解。

进入正题

首先我们利用requests库将网页源码爬取下来,具体代码如下:

import requests
from pyquery import PyQuery as pq

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}

def get_request(url):
    response = requests.get(url, headers=headers)
    print(response.text)

if __name__ == '__main__':
    url = 'https://www.bilibili.com/ranking?'
    get_request(url)

运行这段代码结果如下:
Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行_第1张图片
然后我们只要按下F12分析网页即可
Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行_第2张图片
然后根据分析结果利用pyquery编写代码

def pyquery_re(Response):
    doc = pq(Response)
    results = doc('.rank-list-wrap .rank-list .rank-item').items()
    dict1 = {}
    for result in results:
        dict1['num'] = result('.num').text()
        dict1['href'] = result('.info a').attr.href
        dict1['title'] = result('.info a').text()
        print(dict1)


def get_request(url):
    response = requests.get(url, headers=headers)
    pyquery_re(response.text)

这里我们把requests请求到的源码通过函数传递给了pyquery进行解析。运行结果如下:
Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行_第3张图片
这样每日播放量排名,视频链接和视频名称就都出来了,最后,完整代码如下:

import requests
from pyquery import PyQuery as pq

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}
#这里是请求头部,模拟浏览器

def pyquery_re(Response):
    doc = pq(Response)
    results = doc('.rank-list-wrap .rank-list .rank-item').items()     #这里调用了item()方法得到一个生成器,以便于遍历
    dict1 = {}                                                         #初始化一个字典暂时存储爬取下来的信息
    for result in results:
        dict1['num'] = result('.num').text()
        dict1['href'] = result('.info a').attr.href
        dict1['title'] = result('.info a').text()
        print(dict1)


def get_request(url):
    response = requests.get(url, headers=headers)        #请求网页数据
    pyquery_re(response.text)

if __name__ == '__main__':                               #以主函数的方式执行
    url = 'https://www.bilibili.com/ranking?'
    get_request(url)

是不是感觉很简单。
当然爬虫不可能这么简单就学会,里面也有很多深奥的东西,有很多反爬措施需要我们去应付,所以,现在开始,一起加油努力吧。
PS:如果看完这个文章想要练手的小伙伴可以去豆瓣读书哦。当然也可以去爬我们CSDN官网的今日推荐哦

你可能感兴趣的:(爬虫,Python)