首页 > 编程语言 >python爬虫练习3

python爬虫练习3

时间:2022-10-26 20:35:10浏览次数:78  
标签:get python text 练习 爬虫 param datalist rb select


说明

python 3.6.1 32位
获取豆瓣电影推荐页电影详情,参考网址​​​https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0​​​
使用第三方库BeautifulSoup4,xlwt,lxml。

代码

import os
import json
import shutil

from urllib.parse import urlencode
from urllib.request import urlopen, Request

import xlwt
from bs4 import BeautifulSoup

datalist=[]

def getDetail(purl):

print("当前爬取页面:{0}".format(purl))
try:
resp=urlopen(Request(purl,headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
}))
rb=BeautifulSoup(resp.read().decode('utf-8'),'lxml')
name=rb.select_one('#content > h1 > span').get_text()
doctor=rb.select_one('#info span.attrs').get_text()
score=rb.select_one('#interest_sectl > div.rating_wrap.clearbox > div.rating_self.clearfix > strong').get_text()
scorepersion=rb.select_one('#interest_sectl > div.rating_wrap.clearbox > div.rating_self.clearfix > div > div.rating_sum > a > span').get_text()
date=rb.select_one('#info span[property="v:initialReleaseDate"]').get_text()
img=rb.select_one('#mainpic > a > img').get('src')
desp=rb.select_one('#link-report span[property="v:summary"]').get_text().strip().replace('\n',' ').replace(' ','')
except:
pass
data=[purl,name,doctor,date,score,scorepersion,img,desp]
datalist.append(data)


def saveToFile(param):
if os.path.exists(param):
os.remove(param)
print(len(datalist))
book=xlwt.Workbook(encoding='utf-8',style_compression=0)
sheet=book.add_sheet('豆瓣最新30部电影推荐',cell_overwrite_ok=True)
col = ('链接', '影片名', '导演', '上市日期', '评分', '评分人数', '缩略图链接', '简述')
for i in range(len(col)):
sheet.write(0, i, col[i])
for i in range(len(datalist)):
data = datalist[i]
for j in range(len(col)):
sheet.write(i + 1, j, data[j])
book.save(param) # 保存
print('xls文件已保存')

def saveImg(param):

print("开始获取图片")
if os.path.exists(param):
shutil.rmtree(param)
os.mkdir(param)
for i in range(len(datalist)):
print(datalist[i][6])
try:
resp =urlopen(Request(datalist[i][6],headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}))
with open("{3}{0}.{1}.{2}".format(i+1,datalist[i][1], datalist[i][6].split('.')[-1], param), 'wb+') as f:
f.write(resp.read())
except:
continue
print("图片爬取完成")

if __name__ == '__main__':
values = {
'type': 'movie',
'tag': '热门',
'sort': 'recommend',
'page_limit': '30',#可以修改,指定爬取的记录数
'page_start': '0'#指定爬取开始位置
}
uop = urlopen(Request('https://movie.douban.com/j/search_subjects',data=urlencode(values).encode('utf-8')))

for item in json.loads(uop.read())['subjects']:
getDetail(item['url'])

saveToFile('d:/Zzdouban.xls')
#
saveImg("d:/Zzdouban/");

结果

python爬虫练习3_safari



python爬虫练习3_python_02



python爬虫练习3_html_03


标签:get,python,text,练习,爬虫,param,datalist,rb,select
From: https://blog.51cto.com/u_15847885/5798386

相关文章

  • python入门基础之第三方模块
    python入门基础之第三方模块第三方模块的下载与使用所谓第三方模块,就是别人写的模块,一般功能都比较强大。我们如果想使用第三方模块,第一次必须先下载后面才可以反复使用(......
  • python爬虫练习2
    难度★目标网站​​http://quotes.toscrape.com/tag/humor/​​用到库scrapy1.4系统说明python3.6.164位目标获取名言与作者等(分页)新建文件quotes_spider.py,输入一下代码:i......
  • python爬虫练习1
    目录索引:​​python爬虫练习6:今日头条搜索图集​​​​python爬虫练习5:博客阅读量助手​​python爬虫练习4:刷浏览量​​python爬虫练习3:豆瓣电影推荐页电影详情​​​​pyth......
  • Python的@staticmethod @classmethod @property
    @staticmethod静态方法用于修饰类中的方法,使其可以在不创建类实例的情况下调用方法,好处是执行效率比较高;静态方法就是类对外部函数的封装,有助于优化代码结构、提高程序......
  • Python——爬虫准备工作
    Python——爬虫准备工作第三方模块的下载与使用'''第三方模块: 别人写的模块,一般情况下,功能都非常强大 使用第三方模块: 第一次使用必须先下载,后面才可以反复使用(下......
  • 爬虫、openpyxl、pandas
    目录今日内容概要今日内容详细作业详解第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链家二手房数据自动化办公领域之openpyxl模块homework今日内......
  • python进阶之路21 正则应用 第三方模块之requests模块 openpyxl模块 简易爬虫(panda
    作业讲解"""网络爬虫没有我们现在接触的那么简单 有时候页面数据无法直接拷贝获取 有时候页面还存在防爬机制弄不好ip会被短暂拉黑"""http://www.redbull.com.cn/ab......
  • 23、python模块篇 第三方模块、requests模块、openpyxl模块
    目录一、第三方模块的下载与使用1、什么是第三方模块2、如何安装第三方模块方式一:pip工具方式二:pycharm中下载3、注意事项1、报错并有警告信息2、报错,提示关键字3、报错,无......
  • day22爬虫
    第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链家二手房数据自动化办公领域之openpyxl模块今日内容详细作业讲解"""网络爬虫没有我们......
  • 网络爬虫之requests模块
    第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链接二手房数据自动化办公领域之openpyxl模块第三方模块的扩展(模块叠模块)网络爬虫之小实战......