爬取豆瓣电影信息-基于BeautifulSoup

爬取豆瓣电影信息-BeautifulSoup

1.分析网页结构及爬取

  • 爬取网页小截图
    爬取豆瓣电影信息-基于BeautifulSoup_第1张图片- 建议大家用谷歌浏览器,fn+F12,打开如下界面,可以发现,每一条记录都存放在“
  • ”中,下面第二幅图,是第一个li标签下的内容。
    爬取豆瓣电影信息-基于BeautifulSoup_第2张图片 爬取豆瓣电影信息-基于BeautifulSoup_第3张图片

实现网页翻页爬取

  • 逐个单价,找到url之间的规律:
    就此例题举例,start=0,25,50,75,…,可以找到页面之间的规律,每次加25,同时也是25的倍数。
不同页面情况对比
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
  • 获取“后页”按钮或者网页超链接,依次访问实现爬取
  • 采用网页自动操作技术,获得“后页”按钮或者超链接进行自动单击跳转,如Selenium技术的鼠标单击事件。

爬取实现代码如下

import pandas as pd
from bs4 import BeautifulSoup
import requests
def crawl(url,a1,a2,a3,a4,a5):
    head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}  #请求头
    r = requests.get(url,headers=head)
    html=r.text
    soup=BeautifulSoup(html,'html')
    for tag in soup.find_all(attrs={'class': 'item'}):
        #爬取序号
        num=tag.em.string
        a1.append(num)
        print(num)
        #电影名称
        name=tag.find_all(attrs={'class': 'title'})
        zwname=name[0].get_text()  #或者 zwname=name[0].string
        a2.append(zwname)
        print(zwname)
        #爬取网页链接
        url_name=tag.find(attrs={'class': 'hd'}).a
        urls=url_name.attrs['href']
        a3.append(urls)
        #爬取评分
        info=tag.find(attrs={'class': 'star'}).get_text()
        info=info.replace('\n','').replace('.',',评价人数:').replace('人评价','')
        a4.append(info)
        print(info)
        #获得评语
        info1=tag.find(attrs={'class': 'inq'})
        if(info1):
            content=info1.get_text()
            print(content)
            a5.append(content)
        else:
            a5.append(info1)

if __name__ == '__main__':
    N=10
    a1,a2,a3,a4,a5=[],[],[],[],[]
    for j in range(N):
        url = 'https://movie.douban.com/top250?start='+str(j*25)+'&filter='  #实现网页翻转
        crawl(url,a1,a2,a3,a4,a5)
data=pd.DataFrame({'爬取序号':a1,'电影名称':a2,'爬取网页链接':a3,'爬取评分':a4,'获得评语':a5})
data.to_excel('E:\C盘数据\data3.xlsx',sheet_name='250个电影推荐')  #数据保存,记得修改一下路径

爬取效果(爬取评分那里可以完善一下,分成2个属性)

爬取豆瓣电影信息-基于BeautifulSoup_第4张图片

喜欢的给个小关注,学院自创公众号,期待大家的建议与推荐。

爬取豆瓣电影信息-基于BeautifulSoup_第5张图片

你可能感兴趣的:(爬虫入门,python)