经过查阅一些资料,看了视频,写出了一个简陋的python爬虫程序。
各方资料都表明豆瓣电影排行榜top250是最适合用来进行学习第一次进行python爬虫的程序。
故选择该网站进行标题的爬取。
此网址为豆瓣电影排行top250,
start=0表示排行从该数字+1开始进行排名,
每页有25的个电影,可据此找出每页网址的规律。
即baseurl = "https://movie.douban.com/top250?start="
每页的网址为
for i in range(0,10):#进行翻页操作
url=baseurl+str(i*25)
按下f12进入开发者模式,查看标题处的信息。
标题位于如下位置
<span class='title'>xx</span>
找到整块的信息位置
<div class="hd">
故很容易发现每一个<div class="hd">
都代表了一个电影的所有标题内容,而我们只需要最广为人知的标题内容即可,故只需要提取期中的第一个<span class='title'>
,即可得到电影的名字
下面说明head的获得方法,为了防止被豆瓣拒绝访问,我们需要将自己伪装成浏览器,故需要浏览器的头部信息。
在豆瓣250的网页中按下f12进入开发者模式,点到network选项中,如果此时没有信息,则进行刷新网页的操作,此时按下filter上方的小圆圈暂停,将鼠标移到途中所示位置,即可出线下方的top50的信息,单击这条信息。
进去后点击headers,拉到最下方可以看到user-agent的信息,全部复制,稍加修饰就变成了代码中所使用的的head变量的信息。
from bs4 import BeautifulSoup
import requests
#模拟浏览器头部信息,向豆瓣发送信息
head = {"User-Agent": "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X)AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1"
}
baseurl = "https://movie.douban.com/top250?start="
url=""
count=0
for i in range(0,10):#进行翻页操作
url=baseurl+str(i*25)
f = requests.get(url,headers=head)
soup = BeautifulSoup(f.content, "lxml")
for k in soup.find_all('div',class_='hd'):#找到div并且class为hd的标签
a = k.find_all('span',class_='title') #在每个对应div标签下找span标签
count+=1
print(a[0].string,count) #取第一组的span中的字符串,并输出排名