爬虫案例:爬取top电影

爬虫源码:爬取top电影

顺序

1.打开想要抓取的网页
2.查看接口(url)的调用顺序
3.查看数据的数据结构(要想的数据在HTML中的位置)

实现

import requests     #发送http请求的包
from bs4 import BeautifulSoup  #这个包可以通过解析文档为用户提供需要抓取的数据

start=0        #url中有start  是从0开始
result=[]
header={
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'
}
for i in range(0,1);  #写成0,1 是为了方便测试,调成无误后可调整参数大小
     html = requests.get('https://movie.douban.com/top250?start='+str(start)+'&filter=',headers=header)   #第一个参数就是网站的地址,其中start的值不可以固定,要用一个变量替换。第二个参数写入该网站的请求头中的User-Agent参数。
     print(html.text)
     html.encoding='utf-8'        #因为返回的是中文,所以返回的编码格式是utf-8
     start+=25     //每次自增25,一共是250
     soup=BeautifulSoup(html.text,'html.parser')   #用Beautiful处理上面requests.get处理之后的返回值

     for item in soup.find_all('div','info'):   #  每一个电影都是在div块中的info  class里面
         title=item.div.a.span.string    #要取到的是title类里面的电影名
         print(title)
         yearline=item.find('div','bd').p.contents[2].string     #P标签中第二行的string,但是第二行还有其他数据,需要做处理、
         yearline=yearline.replace('\n','')   #将回车替换去掉
         yearline=yearline.replace(' ','')

         year=yearline[0:4]

        rating = item.find('span', {'class': 'rating_num'}).get_text()
      # print(title + ' ' + year + ' ' + rating)
      oneresult = [title, rating, year]
      result.append(oneresult)

print(result)
import unicodecsv as csv

with open('test.csv', 'wb') as f:
    w = csv.writer(f)
    w.writerows(result) 

请自行调整缩进格式以免报错

本文参考B站up主:python日记

你可能感兴趣的:(python,爬虫,python,数据挖掘)