爬取豆瓣电影Top250和和豆瓣图书

Posted truedragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬取豆瓣电影Top250和和豆瓣图书相关的知识,希望对你有一定的参考价值。

豆瓣电影top250url:https://movie.douban.com/top250?start=0&filter=

首先f12进入检查CTRL +shift +c定位到标题

技术图片

 

 可以看到电影标题在<a>标签下,所以我们只要定位到a标签下就可以了,我们找到<a>标签的最上一级标签<div>标签属性class=item,好了现在我们大概有了思路了,现在让我来写代码吧

第一步:设置请求头headers

headers = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69}

然后我们发送get请求,并用BeautifulSoup解析

1 html = requests.get(url,headers=headers)
2 soup = BeautifulSoup(html.text,lxml)

这了我们用BeautifulSoup的select方法

movies = soup.select(.item)

这样我们就定位到了div标签,我们创建一个迭代对象一步一步向下定位,定位到我们需要的内容

1     for movie in movies:
2         movie_name = movie.select_one(div.info a).text.strip().replace( ,‘‘).replace(
,‘‘)
3         movie_star = movie.select_one(div.star).text.strip()
4         movie_quote = movie.select_one(p.quote).text.strip()
5         print(movie_name,movie_star[0:3])
6         print(movie_quote,
,-*80)

其实现在代码已经可以运行了,但是我们只能获取到第一页的内容,如果我们想自动翻页获取怎么办呢

我们点击第二页,查看第二页的url:https://movie.douban.com/top250?start=25&filter=,查看第三页url:https://movie.douban.com/top250?start=50&filter=我们可以发现一个规律

就是翻页其实只带来了url中start=_x_这个数字的改变,所以我们只要写一个for循环每次改变这个数字就可以实现url的改变

现在我们运行代码数据被成功的被爬取了下来

技术图片

 

 完整代码如下:

 1 import requests
 2 from bs4 import BeautifulSoup
 3 
 4 def get_movies(url):
 5     headers = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69}
 6     html = requests.get(url,headers=headers)
 7     soup = BeautifulSoup(html.text,lxml)
 8     movies = soup.select(.item)
 9     for movie in movies:
10         movie_name = movie.select_one(div.info a).text.strip().replace( ,‘‘).replace(
,‘‘)
11         movie_star = movie.select_one(div.star).text.strip()
12         movie_quote = movie.select_one(p.quote).text.strip()
13         print(movie_name,movie_star[0:3])
14         print(movie_quote,
,-*80)
15 
16 if __name__ == __main__:
17     for each in range(0,100,25):
18         url = https://movie.douban.com/top250?start={}&filter=.format(each)
19         get_movies(url)

当我们会爬取豆瓣电影后其他的类似网站我们同样可以爬取:这里我们再把豆瓣书籍爬取一边:

爬取豆瓣读书的完整代码如下:

方法和上面是一样的,先用get请求获取网页源码,再用BeautifulSoup解析,然后用select方法迭代

 1 import requests,time
 2 from bs4 import BeautifulSoup
 3 from urllib import parse
 4 headers = {
 5     User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69
 6 }
 7 def get_html(url):
 8     html = requests.get(url,headers=headers)
 9     soup = BeautifulSoup(html.text,lxml)
10     books = soup.select(li.subject-item)
11     for book in books:
12         title = book.select_one(div.info h2 a).text.strip().replace(
,‘‘).replace( ,‘‘)
13         pub = book.select_one(div.pub).text.strip().replace(
,‘‘)
14         shuping = book.select_one(p).text
15         ratingnum = book.select_one(.rating_nums).text
16         print(,title,,pub,"评分",ratingnum,"")
17         print(shuping)
18         print(-*80)
19 
20 
21 if __name__ == __main__:
22     for each in range(0,100,20):
23         url = https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={}&type=T.format(each)
24         print(正在爬取第{}.format((each//20+1)))
25         get_html(url)

 

以上是关于爬取豆瓣电影Top250和和豆瓣图书的主要内容,如果未能解决你的问题,请参考以下文章

团队-爬取豆瓣电影TOP250-需求分析

python爬取豆瓣电影Top250(附完整源代码)

团队-爬取豆瓣电影TOP250-需求分析

团队-Python 爬取豆瓣电影top250-需求分析

爬取豆瓣网图书TOP250的信息

《团队-爬取豆瓣电影TOP250-需求分析》