python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
2019-07-11 23:13
489 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39600286/article/details/95534848
传送门:【python爬虫入门练习】正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件
对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致匹配不上的情况,本文将介绍一种更简便更流行的匹配方式:beautifulsoup
首先,安装beautifulsoup:pip install beautifulsoup4
其次,python是自带标准解析器的,但是更建议使用执行速度更快,文档容错能力强的lxml,安装:pip install lxml
导入方法:from bs4 import Beautifulsoup4
同样的我们先拿到网页源代码
在<dd></dd>中间,直接通过目标信息的标签来定位,相同的标签,通过加属性条件来区分:
from bs4 import BeautifulSoup data = [] def page(text): soup = BeautifulSoup(text, 'lxml') for s in soup.find_all('dd'): datalist = {'排名': s.find('i').get_text(), '电影名称': s.find('p', class_="name").get_text(), '主演': s.find('p', class_="star").get_text().strip()[3:], '上映时间': s.find('p', class_="releasetime").get_text().strip()[5:], '评分': s.find('p', class_="score").get_text()} data.append(datalist)
是不是清晰明了很多,就这样匹配这一步就搞定了,然后我们来说下导出,在前一篇,我们是通过openpyxl方式导出数据到本地Excel,下面介绍一种新的方式,通过pandas导出,更适合大数据量的处理 安装:pip install pandas
import pandas def writeexcel(localfile, text): pandas.DataFrame(text,columns=['排名','电影名称','主演','上映时间']).to_excel(localfile,index=False)
一行代码,搞定,解释一下,默认的导出文件会在第一列生成序号,我们可以通过 index=False 来取消这个操作
放一下全部代码
import requests import threading from bs4 import BeautifulSoup import pandas def login(url): req = requests.get(url) if req.ok: return req.content.decode('utf-8') else: return None data = [] def page(text): soup = BeautifulSoup(text, 'lxml') for s in soup.find_all('dd'): datalist = {'排名': s.find('i').get_text(), '电影名称': s.find('p', class_="name").get_text(), '主演': s.find('p', class_="star").get_text().strip()[3:], '上映时间': s.find('p', class_="releasetime").get_text().strip()[5:], '评分': s.find('p', class_="score").get_text()} data.append(datalist) def writeexcel(localfile, text): pandas.DataFrame(text, columns=['排名', '电影名称', '主演', '上映时间']).to_excel(localfile, index=False) def main(i): html = login('https://maoyan.com/board/4?offset=' + str(10 * i)) page(html) if __name__ == '__main__': Threadtest = [threading.Thread(target=main, args=[i, ]) for i in range(10)] for t in Threadtest: t.start() t.join() excelpath = 'C:\\Users\\ll\\Desktop\\film.xlsx' writeexcel(excelpath, data)
相关文章推荐
- Python爬虫(三):爬取猫眼电影网经典电影TOP100信息并存入本地Markdown文件(下)
- Python爬虫(三):爬取猫眼电影网经典电影TOP100信息并存入本地Markdown文件(上)
- 不务正业--用python爬虫抓取Konachan的图片并保存到本地文件
- python爬虫由浅入深9---定向爬取股票数据信息并保存至本地文件
- Python之BeautifulSoup学习之三 读取本地html文件,并将其中图片保存下来
- Python 爬取淘宝商品的价格并保存到本地excel文件中
- Python爬虫入门——2. 5 爬取斗破苍穹并保存到本地TXT
- Python爬虫(入门+进阶)学习笔记 1-5 使用pandas保存豆瓣短评数据
- python爬虫由浅入深1-从网页中爬取文件并保存至本地
- 零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
- python3将视频流保存为本地视频文件
- java 中 excel生成并文件下载保存到本地(三)
- python爬虫简单的抓页面图片并保存到本地
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/03/05
- Python配合BeautifulSoup读取网络图片并保存在本地
- [python爬虫入门]爬取豆瓣电影排行榜top250
- java 中 excel生成并文件下载保存到本地
- 爬虫入门【9】Python链接Excel操作详解-openpyxl库
- Python3 爬虫拉勾网抓取数据保存在Excel中