request以及bs4库爬取豆瓣电影前100

本文分享了使用Python进行网页爬取的实战经验,重点介绍了如何从豆瓣电影Top250页面抓取电影名称、评分、链接及短评信息。作者通过解析HTML,利用requests和BeautifulSoup库实现了数据的抓取,并初步探讨了数据存储的方法。
import requests
import re
from bs4 import BeautifulSoup

def getHtmlText(url, ulist):
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    movie_title = soup.find_all('span',class_='title')
    movie_link = soup.find_all('div', class_='hd')
    linkinfo = []
    for link in movie_link:
        linkinfo.append(link.a.attrs['href'])

    movie_rate = soup.find_all('span',class_='rating_num')
    movie_intro = soup.find_all('span',class_='inq')
    infolist = []
    for title in movie_title: #剔除标题中的冗杂信息 例如港台译名
        if title.text.find('/')== -1:
            infolist.append(title.string)

    for i in range(len(movie_link)):
        ulist.append([infolist[i], linkinfo[i], movie_rate[i].text, movie_intro[i].text])

def printText(ulist):
#     print('名称\t\t\t评分\t\t\t\t链接')
    for i in range(len(ulist)):
        u = ulist[i]
#         print(u[0],'\t\t', u[2],'\t\t', u[1],'\n\n一句话短评: ', u[3],'\n')
        print1('名称', u[0])
        print1('评分', u[2])
        print1('链接', u[1])
        print1('短评', u[3])
#....有点傻,下次研究下怎么自动把爬出来的东西保存以及如何合理制表

def print1(name, info):
    print('{}:{}'.format(name, info))

def main():
    ulist = []
    for i in range(4):
        url = 'https://movie.douban.com/top250?start={}'.format(i*25)
        getHtmlText(url, ulist)
        printText(ulist)
main()

在看完网课后首次编写爬虫,哎,感觉好笨,参考了很多博客。因为经验不足出现很多简单的错误,比如turple out of index, list is not callable等等。下次目标是爬取电影短评以及将数据合理的保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值