Python抓取豆瓣电影的名称,前两个还正常,为啥到后面,成了英文原名啊

2022-08-17 17:07:41 浏览数 (1)

大家好,我是皮皮。

一、前言

前几天在Python黄金交流群有个叫【IRONIC】的粉丝问了一个Python网络爬虫的问题,这里拿出来给大家分享下,一起学习下。

他的代码如下:

代码语言:javascript复制
import requests
from bs4 import BeautifulSoup
#获取相应数据
url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.3161 SLBChan/11'
}
r = requests.get(url,headers=headers)

#解析数据
#BeautifulSoup(名称.text(以文本的形式存入),'html.parser'Python内置库)
soup = BeautifulSoup(r.text,'html.parser')

ranks = soup.find_all('em',class_='')
titles = soup.find_all('span',class_='title')
bds = soup.find_all('p',class_='')
rates = soup.find_all('span',class_='rating_num')
quotes = soup.find_all('span',class_='inq')
#通过循环取出

for i in range(25):
    print(ranks[i].text,
          titles[2*i].text,
          bds[i].text,
          rates[i].text,
          quotes[i].text)

可以看到Python抓取豆瓣电影的名称,前两个还正常,到后面,成了英文原名了。

二、解决过程

这个问题倒不是很难,原始网页中的源代码长这样。

那么可以看到那个title有两个,一个中文,一个英文。【月神】这里给了一个更好的思路。

这里给出了具体的代码,一气呵成。

代码语言:javascript复制
import requests
from bs4 import BeautifulSoup
#获取相应数据
url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.3161 SLBChan/11'
}
r = requests.get(url,headers=headers)

#解析数据
#BeautifulSoup(名称.text(以文本的形式存入),'html.parser'Python内置库)
soup = BeautifulSoup(r.text,'html.parser')

movie_ranks = []
lis = soup.find_all('li', class_=None)
for li in lis:
    if li.find_all('em', class_=''):
        ranks = li.find('em', class_='').text
        titles = li.find('span',class_='title').text
        bds = li.find('p',class_='').text
        rates = li.find('span',class_='rating_num').text
        quotes = li.find('span',class_='inq').text
        print(ranks, titles, bds, rates, quotes)

这样的话,理解起来就简单很多了。【月神】代码运行之后的结果,如下图所示,可以看到电影名称都出来了。

完美地帮助粉丝解决了问题。

三、总结

大家好,我是皮皮。这篇文章主要分享了Python抓取豆瓣电影的名称,前两个还正常,到后面成了英文原名的问题,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

最后感谢粉丝【IRONIC】提问,感谢【月神】、【格格物 এ คิดถึง】给出的具体解析和代码演示,感谢【dcpeng】等人参与学习交流。

0 人点赞