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

大家好,我是吒吒。

一、前言

前几天在Python交流群看到有个小伙伴问了一个Python网络爬虫的问题,这里拿出来给大家分享下,一起学习下。

 

他的代码如下:

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有两个,一个中文,一个英文。这里另一个小伙伴给了一个更好的思路。

 

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

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抓取豆瓣电影的名称,前两个还正常,到后面成了英文原名的问题,针对该问题给出了具体的解析和代码演示,顺利解决了问题。如果你也有Python爱好者,我这里也整理了一套完整的新手学习路线跟资料,戳下面名片找小助理领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值