python爬虫 完整代码

python爬虫 完整代码这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

大家好,又见面了,我是你们的朋友全栈君。

python爬虫 完整代码

使用Python爬取豆瓣top250的相关数据,并保存到同目录下Excel

import re
import urllib.error
import urllib.request

import xlwt
from bs4 import BeautifulSoup


def main():
    baseurl ="https://movie.douban.com/top250?start=/"

    datelist = getDate(baseurl)
    savepath=".\\douban.xls"
    saveDate(datelist,savepath)

    # askURL("https://movie.douban.com/")

findlink = re.compile(r'<a href="(.*?)">')
findimg = re.compile(r'<img.*src="(.*?)"',re.S)
findtitle = re.compile(r'<span class="title">(.*)</span')
findrating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span')
findjudge = re.compile(r'<span>(\d*)人评价</span>')
findinq= re.compile(r'<span class="inq">(.*)</span>')

def getDate(baseurl):
    datalist =[]
    for i in range(0,10):
        url=baseurl+str(i*25)
        html=askURL(url)
        soup = BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_="item"):
            data = []
            item = str(item)
            link = re.findall(findlink,item)[0]
            data.append(link)
            img=re.findall(findimg,item)[0]
            data.append(img)
            title=re.findall(findtitle,item)[0]

            rating=re.findall(findrating,item)[0]
            data.append(rating)
            judge=re.findall(findjudge,item)[0]
            data.append(judge)
            inq=re.findall(findinq,item)

            if len(inq)!=0:
                inq=inq[0].replace("。","")
                data.append(inq)
            else:
                data.append(" ")
            print(data)
            datalist.append(data)
        print(datalist)
    return datalist

def askURL(url):
    head = { 
   "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"}
    request=urllib.request.Request(url,headers=head)
    html=""
    try:
        response=urllib.request.urlopen(request)
        html=response.read().decode("utf-8")
        # print(html)
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

    return html

def saveDate(datalist,savepath):
    workbook = xlwt.Workbook(encoding='utf-8')
    worksheet = workbook.add_sheet('豆瓣电影',cell_overwrite_ok=True)
    col =("电影详情","图片","影片","评分","评价数","概况")
    for i in range(0,5):
        worksheet.write(0,i,col[i])
    for i in range(0,250):
        print("第%d条" %(i+1))
        data=datalist[i]
        for j in range(0,5):
            worksheet.write(i+1,j,data[j])

    workbook.save(savepath)



if __name__ == '__main__':
    main()
    print("爬取完毕")

直接复制粘贴就行。
若要更改爬取网站,则需要更改URL以及相应的html格式(代码中的“item”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134562.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android SDK安装及配置模拟器[通俗易懂]

    Android SDK安装及配置模拟器[通俗易懂]1、下载官方下载地址2、解压

  • h5调用微信支付_h5打开小程序

    h5调用微信支付_h5打开小程序h5注册公众号jssdk,使用微信方法h5注册公众号jssdk,使用微信方法h5注册公众号jssdk,使用微信方法首先引入必要的js,http://res2.wx.qq.com/open/js/jweixin-1.4.0.js,可用https。然后进行验证,通过wx.config接口wx.config({debug:true,//开启调试模式,调用的所有api的返回值会在客户端…

  • 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)

    电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)电驴上的丰富资源让我们眼馋,尤其是一些国外的大片资源。但是往往出现不能下载的情况。其实原因就是出在电驴服务器列表上,我们常用的电驴服务器列表都是www.emule.org.cn提供的他并不包含一些国外的服务器列表,所以就引起了某些国外资源下载不了。其实只要大家更新一下电驴服务器列表就可以解决这个小问题。上哪去找电驴服务器列表呢?当然有网站为我们做好了服务,ed2k.2x4u.de就是这样的一个网站…

  • Root apk 2021_proguard混淆jar包

    Root apk 2021_proguard混淆jar包backdoor-apk从名字上我们就能知道它的用途了,没错就是用来制作APK后门的。这款工具使用起来非常方便,而且功能也很强大!话不多说,下面我们直接进入正题。首先,让我们对它进行安装,在安装前我们需要先安装它的一些依赖lib库文件:apt-getinstalllib32stdc++6lib32ncurses5lib32z1这里询问我们,对这些安装的服务,当他们更新时不再进行询…

  • CPU型号后缀字母所代表的含义

    CPU型号后缀字母所代表的含义一、Intel桌面式CPU——只看数字你就输了●X后缀X后缀=至高无上的至尊版  X代表Extreme,中文意思是至尊级,代表同一时代性能最强的CPU。如Corei7-5960X、Corei7-4960X。X代表在同一代中只有一款CPU黄袍加身,地位至高无上。加上没有竞争对手可以望其项背,…

  • let暂时性死区

    let暂时性死区只要块级作用域内存在let命令,他所声明的变量就绑定这个区域,不再受外部的影响。vartmp=123;if(true){tmp=’abc’;lettmp;}抛出错误:ReferenceError上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。ES…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号