博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[教程]图文:爬虫爬取豆瓣电影top250
阅读量:6966 次
发布时间:2019-06-27

本文共 3247 字,大约阅读时间需要 10 分钟。

window环境下 使用python脚本爬取豆瓣

环境安装

  • python python开发环境
  • jupyter python web IDE
  • requests python requests模块用于向web页面发起访问请求
  • BeautifulSoup Beautiful Soup是python的一个库,用于从html和xml文件中拉去数据
  • openpyxl openpyxl 是python的一个库, 用于读写excel文件
  • infolite chrome插件安装

图文操作

1154696-20170617152329946-29295441.png

1154696-20170617152357290-1642627074.png
1154696-20170617152408665-1293842566.png
1154696-20170617152412275-1852066880.png
1154696-20170617152415650-127653629.png
1154696-20170617152424306-64079759.png
1154696-20170617152432618-733995845.png
1154696-20170617152437525-1654479369.png
1154696-20170617152443118-1401052463.png
1154696-20170617152538525-1622081379.png
1154696-20170617152541525-280070738.png
1154696-20170617152544134-1392563495.png

代码

# 1 简单爬取豆瓣 获取页面import requestsres = requests.get("http://movie.douban.com/top250/")print(res.text)
# 2 爬去Dom结构 获得页面里面有用的内容from bs4 import BeautifulSouphtml_sample = '\ \   \    

hello world

\ This is link1 \ This is link2 \ \'soup = BeautifulSoup(html_sample,"html5lib")print(soup.text)print(soup.contents)print(soup.select('html'))print(soup.select('html')[0])print(soup.select('h1'))print(soup.select('a'))print(soup.select('#title'))print(soup.select('.link'))
# 3上面两个实例结合import requestsfrom bs4 import BeautifulSoupres = requests.get("http://movie.douban.com/top250/")soup = BeautifulSoup(res.text,"html5lib")# soup = BeautifulSoup(res.text, 'html.parser')for item in soup.select(".item"):    print(item.select(".title"))
#!/usr/bin/env python# encoding=utf-8import requests,reimport codecsfrom bs4 import BeautifulSoupfrom openpyxl import Workbookwb = Workbook()dest_filename = '电影.xlsx'ws1 = wb.activews1.title = "电影top250"DOWNLOAD_URL = 'http://movie.douban.com/top250/'def download_page(url):    """获取url地址页面内容"""    headers = {        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'    }    data = requests.get(url, headers=headers).content    return datadef get_li(doc):    soup = BeautifulSoup(doc, 'html.parser')    ol = soup.find('ol', class_='grid_view')    name = [] #名字    star_con = [] #评价人数    score = []  #评分    info_list = []  #短评    for i in ol.find_all('li'):        detail = i.find('div', attrs={'class': 'hd'})        movie_name = detail.find('span', attrs={'class': 'title'}).get_text() #电影名字        level_star = i.find('span',attrs={'class':'rating_num'}).get_text() #评分        star = i.find('div',attrs={'class':'star'})        star_num = star.find(text=re.compile('评价'))  #评价        info = i.find('span',attrs={'class':'inq'})  #短评        if info:     #判断是否有短评            info_list.append(info.get_text())        else:            info_list.append('无')        score.append(level_star)        name.append(movie_name)        star_con.append(star_num)    page = soup.find('span', attrs={'class': 'next'}).find('a') #获取下一页    if page:        return name,star_con,score,info_list,DOWNLOAD_URL + page['href']    return name,star_con,score,info_list,Nonedef main():    url = DOWNLOAD_URL    name = []    star_con=[]    score = []    info = []    while url:        doc = download_page(url)        movie,star,level_num,info_list,url = get_li(doc)        name = name + movie        star_con = star_con + star        score = score+level_num        info = info+ info_list    for (i,m,o,p) in zip(name,star_con,score,info):        col_A = 'A%s'%(name.index(i)+1)        col_B = 'B%s'%(name.index(i)+1)        col_C = 'C%s'%(name.index(i)+1)        col_D = 'D%s'%(name.index(i)+1)        ws1[col_A]=i        ws1[col_B] = m        ws1[col_C] = o        ws1[col_D] = p    wb.save(filename=dest_filename)if __name__ == '__main__':    main()

参考

转载于:https://www.cnblogs.com/viviwong345/p/7040320.html

你可能感兴趣的文章
网站服务器设置禁PING的方法步骤
查看>>
Linux基础命令---lpstat查看打印机状态
查看>>
新年福利 | 架构的“一小步”,业务的一大步
查看>>
Confluence 6 升级中的一些常见问题
查看>>
不可小看的数值类型—Python基础前传(5)
查看>>
集群中节点挂载数据盘的几种方式
查看>>
工作日志——基于k8s搭建spark集群
查看>>
3. 爬虫框架Clawler 爬取优酷电影名
查看>>
记维护旧项目遇到的问题
查看>>
Node v10.15.3 (LTS) 发布,服务器端的 JavaScript 运行环境
查看>>
如何让你的网站拥有网盘功能, 一分钟搞定
查看>>
行李箱品牌“July”完成数百万元天使轮融资
查看>>
group by,where,having之间的区别和用法
查看>>
HashMap VS Hashtable
查看>>
MySQL-To-JSON 的 Kafka 生产者
查看>>
[网络篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多种配网方式
查看>>
C4C销售订单中业务伙伴的自动决定功能Partner determination procedure
查看>>
关于Java序列化你不知道的事
查看>>
使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。...
查看>>
项目管理助力组织赢在VUCA时代
查看>>