佛山合展商务网站建设,wordpress播放网盘,十大职业资格培训机构,wordpress word文档从这周开始#xff0c;每周来一个爬虫小教程#xff0c;希望对你们有所帮助#xff0c;这次的目标是B站排行榜至于爬取什么内容#xff0c;目前感觉就把序号#xff0c;名称以及评分爬取下来吧#xff08;因为我是边写教程边写代码的#xff09;
这次需要用到的知识每周来一个爬虫小教程希望对你们有所帮助这次的目标是B站排行榜至于爬取什么内容目前感觉就把序号名称以及评分爬取下来吧因为我是边写教程边写代码的
这次需要用到的知识Requests模块
Xpath模块说白了就是Html
有看我的博客www.lanol.cn
首先来到这个页面https://www.bilibili.com/ranking/all/0/0/1目前是全站榜我们尝试切换到原创榜就会发现网址栏对应的网址改变了所以我们只需要修改网址就可以获取想要的榜单我不确定会不会每天都变没观察
然后改变这个投稿类型和日期网址也会改变到这里我们就已经获取到想要爬取的网址了。request中的url也就确定了。url ‘https://www.bilibili.com/ranking/all/0/0/1’
我们按快捷键CtrlU查看源代码然后搜索一下排行第一的视频。我们可以发现在源代码里面有这样的话我们就可以直接用requests模块获取源码再利用Xpath解析网页了。有关Xpath的时候方法可以看这篇文章Python爬虫Xpath语法笔记。
然后来开始写代码第一步永远都不会变的先导入Requests模块和将网页源码转换为可以Xpath的模块这两个模块如果没有可以pip一下博客内也有教程搜索即可import requests
import parsel
然后就是做一个请求头伪装成普通浏览器去访问一般来说刚开始只加一个user-agent就可以了如果有反爬机制再去加。
请求头也就是这一块我们一开始只放一个user-agent进去
user-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
我们复制下来之后是上面这样的然后我们要转换成python里面字典的格式。也就是加个引号就行了。user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
然后放到Python代码中就是这样子的。headers {
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
}
这样requests模块中的headers就构造好了
然后就是写上这一句就可以获取到源码了。response requests.get(urlurl, headersheaders).text
这句话的意思就是调用requests模块然后get请求这个url最后将获取到的内容取text格式然后赋值给response。
我们来执行看一下不要忘记输出一下哦。这样子我们的页面源码就获取到了而且里面可以看到我们之前搜索的排行第一的视频【官方MV】Mojito - 周杰伦。
然后我们回到网站右键视频标题点击检查。我们再在源码这右键一下点击Copy点击Copy Xpath这样Xpath就复制下来了动画演示原文地址www.lanol.cn
//*[idapp]/div[1]/div/div[1]/div[2]/div[3]/ul/li[1]/div[2]/div[2]/a
我们将这句Xpath粘贴到浏览器插件里面测试一下。
可以看见我们已经可以选中这句标题了然后我们再利用HTML知识修改一下这句话,就可以获取到所有标题了。//div[2]/div[2]/a我们放到Python里面执行一下。发现获取的内容似乎有点多这里不仅把标题弄出来了而且还将这句代码弄出来了我们在后面加一个text()只获取文本内容。这样就可以了我们再来试一下获取分数。一如之前的操作右键分数点击检查再在代码处右键点击Copy点击Copy Xpath。//*[idapp]/div[1]/div/div[1]/div[2]/div[3]/ul/li[20]/div[2]/div[2]/div[2]/div再修改一下这句话以获取我们想要的全部内容。//div[2]/div[2]/div[2]/div/text()然后放到Python里面执行一下。成功获取所有分数。
综上我们想要获取的信息都已经取到了。
然后就是写到表格之中这里为了方便直接写到csv即可。直接贴代码了。with open(B站排行榜www.lanol.cn.csv, w) as f:
f.write(标题,分数\n)
for index, i in enumerate(titles):
f.write(f{i},{grades[index]}\n)这样子就可以了这个只是一个思路获取更多信息你可以自由发挥。
所有代码一共才17行人生苦短Python当歌其实其他语言也可以只是麻烦了一点而已。
所有代码如下
[CommShow]import parsel
import requests
url https://www.bilibili.com/ranking/all/0/0/1
headers {
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
}
response requests.get(urlurl, headersheaders).text
response parsel.Selector(response)
# www.lanol.cn Lan的小站
titles response.xpath(//div[2]/div[2]/a/text()).extract()
grades response.xpath(//div[2]/div[2]/div[2]/div/text()).extract()
with open(B站排行榜www.lanol.cn.csv, w) as f:
f.write(标题,分数\n)
for index, i in enumerate(titles):
f.write(f{i},{grades[index]}\n)
print(grades)
[/CommShow]