一个好网站中国光伏企业排行榜

当前位置: 首页 > news >正文

一个好网站,中国光伏企业排行榜,网站维护推广的方案,上海做机床的公司网站在当今数字化的时代#xff0c;网络上丰富的影视资源信息吸引着众多开发者去挖掘和利用。今天#xff0c;我就来和大家分享一段有趣的代码#xff0c;它能够从豆瓣电影平台获取相关数据并存储到数据库中哦。 结果展示#xff08;文末附完整代码#xff09;#xff1a; 目…        在当今数字化的时代网络上丰富的影视资源信息吸引着众多开发者去挖掘和利用。今天我就来和大家分享一段有趣的代码它能够从豆瓣电影平台获取相关数据并存储到数据库中哦。 结果展示文末附完整代码 目录 结果展示文末附完整代码 一、代码准备 二、Douban 类的初始化

  1. 请求头设置

  2. Cookie 设置

  3. 数据库连接 三、获取电影种类相关数据

  4. 初始请求

  5. 进一步处理 四、解析并存储数据

  6. 请求数据

  7. 数据处理与存储 完整代码 一、代码准备 首先我们看到这段代码开头进行了一系列的导入操作。它引入了像 re用于正则表达式处理、pymysql用于与 MySQL 数据库进行交互、requests方便发送 HTTP 请求以及 lxml用于解析 HTML 等这些非常实用的库。

    -- coding:utf-8 --

    import re import pymysql import requests from lxml import etree二、Douban 类的初始化 接下来定义了一个名为 Douban 的类。在这个类的初始化方法 init 中做了很多重要的设置。

  8. 请求头设置 设置了 headers这里面包含了各种关于请求的信息比如接受的内容类型、语言偏好、缓存控制等等。这些设置能够让我们的请求更符合豆瓣服务器的要求顺利获取到数据。例如 self.headers {accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.7,accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,// 其他设置省略 }2. Cookie 设置 同时也配置了 cookies这些是在之前与豆瓣网站交互过程中可能留下的一些标识信息对于后续请求获取准确数据也起到了一定的作用哦。比如 self.cookies {_pk_id.100001.4cf6: f993e3f352d610f5.1712975414.,__gads: ID8f742f4360ad4561:T1712975416:RT1712975416:SALNI_MYEjjG_8aAehpZQ58LPXuy8119UYQ,// 其他设置省略 }3. 数据库连接 还建立了与 MySQL 数据库的连接哦。指定了数据库的主机地址这里是本地的 127.0.0.1、端口3306、用户名root、密码921108以及要使用的数据库名data并且创建了一个游标以便后续执行 SQL 语句呢。 self.db pymysql.Connect(host127.0.0.1,port3306,userroot,password921108,dbdata ) self.cursor self.db.cursor()三、获取电影种类相关数据 在 Douban 类中有一个 get_zhonglei 方法它主要负责获取电影的种类相关信息。

  9. 初始请求 首先它会向豆瓣电影的排行榜页面https://movie.douban.com/chart发送一个 GET 请求带上之前设置好的 headers 和 cookies。然后通过 lxml 的 etree 来解析获取到的 HTML 内容找到页面中相关的 span 元素列表。 url https://movie.douban.com/chart response requests.get(url, headersself.headers, cookiesself.cookies).text html etree.HTML(response) spanlist html.xpath(//*[idcontent]/div/div[2]/div[1]/div/span)2. 进一步处理 对于每个找到的 span 元素它会提取出其中链接的 href 属性值通过正则表达式从 href 中获取到电影类型对应的编号 type。然后根据这个编号构建新的请求链接再次发送请求获取到该类型电影的总数 filtered_total最后调用 parse 方法来进一步处理这些数据哦。 for span in spanlist:href span.xpath(./a/href)[0]type re.findall(rtype(\d), href)[0]url fhttps://movie.douban.com/j/chart/top_listcount?type{type}interval_id100%3A90actionresponse requests.get(urlurl, headersself.headers, cookiesself.cookies).json()filtered_total response[filteredtotal]self.parse(type, filtered_total, j, i)四、解析并存储数据 Douban 类中parse 方法则承担着解析获取到的具体电影数据并存储到数据库的重要任务。

  10. 请求数据 它会根据传入的电影类型编号 type_ 和总数 filtered_total构建合适的请求参数向 https://movie.douban.com/j/chart/top_list 发送请求获取到该类型下的一系列电影详细信息这些信息是以 JSON 格式返回的哦。 url https://movie.douban.com/j/chart/top_list params {type: type_,interval_id: 100:90,action: ,start: 0,limit: filtered_total, } response requests.get(url, headersself.headers, cookiesself.cookies, paramsparams).json()2. 数据处理与存储 对于每一部电影的信息它提取出诸如电影标题、演员数量、演员名单、评分、地区、上映日期、电影类型、投票数等重要信息。并且对上映日期进行了一些格式上的处理然后将这些数据按照一定的格式准备好尝试插入到名为 movie_info 的数据库表中。如果在插入过程中出现了 MySQL 错误它会打印出错误信息哦。 for item in response:title item[title]actor_count item[actor_count]actors item[actors]score item[rating][0]regions item[regions][0]release_date item[release_date]types item[types]vote_count item[vote_count]// 数据处理省略部分代码try:sql insert into movie_info (movie_name,movie_date,movie_type, movie_country,actor_name,score, score_all) values (%s,%s,%s,%s,%s,%s,%s)self.cursor.execute(sql, (movie_name,movie_date,movie_type, movie_country,actor_name,score, score_all))self.db.commit()except pymysql.MySQLError as e:print(fAn error occurred: {e})完整代码

    -- coding:utf-8 --

    import reimport pymysql import requests from lxml import etreeclass Douban(object):def init(self):self.headers {accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.7,accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,cache-control: no-cache,pragma: no-cache,priority: u0, i,referer: https://cn.bing.com/,sec-ch-ua: \Microsoft Edge\;v\131\, \Chromium\;v\131\, \Not_A Brand\;v\24\,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: \Windows\,sec-fetch-dest: document,sec-fetch-mode: navigate,sec-fetch-site: cross-site,sec-fetch-user: ?1,upgrade-insecure-requests: 1,user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0 }self.cookies {‘填入你的cookies’}self.db pymysql.Connect(host127.0.0.1,port3306,userroot,password921108,dbdata)self.cursor self.db.cursor()def get_zhonglei(self, j ,i):url https://movie.douban.com/chartresponse requests.get(url, headersself.headers, cookiesself.cookies).texthtml etree.HTML(response)span_list html.xpath(//*[idcontent]/div/div[2]/div[1]/div/span)for span in spanlist:href span.xpath(./a/href)[0]# text span.xpath(./a/text())[0]# print(url)type re.findall(rtype(\d), href)[0]# print(type_)url fhttps://movie.douban.com/j/chart/top_listcount?type{type}interval_id100%3A90actionresponse requests.get(urlurl, headersself.headers, cookiesself.cookies).json()filtered_total response[filteredtotal]print(type, filteredtotal)self.parse(type, filteredtotal, j, i)def parse(self, type, filtered_total, j, i):url https://movie.douban.com/j/chart/top_listparams {type: type_,interval_id: 100:90,action: ,start: 0,limit: filtered_total,}response requests.get(url, headersself.headers, cookiesself.cookies, paramsparams).json()for item in response:title item[title]actor_count item[actor_count]actors item[actors]score item[rating][0]regions item[regions][0]release_date item[release_date]types item[types]vote_count item[vote_count]j 1# i.append([j, title, actor_count, actors, score, regions, release_date, types, vote_count])# print(j, title, actor_count, actors, score, regions, release_date, types, vote_count)if len(release_date) 4:movie_date f{release_date}-01-01else:movie_date release_datemovie_name titlemovie_type str(types)movie_country regionsactor_name str(actors)score_all vote_countprint(j, movie_name,movie_date,movie_type, movie_country,actor_name,score, score_all)# 插入movies表try:sql insert into movie_info (movie_name,movie_date,movie_type, movie_country,actor_name,score, score_all) values (%s,%s,%s,%s,%s,%s,%s)self.cursor.execute(sql, (movie_name,movie_date,movie_type, movie_country,actor_name,score, score_all))self.db.commit()except pymysql.MySQLError as e:print(fAn error occurred: {e})# self.db.rollback()pass if name main:j 0i []spider Douban()spider.get_zhonglei(j, i) 通过这段代码我们就可以实现从豆瓣电影平台获取丰富的电影数据并将它们有序地存储到我们自己的数据库中啦是不是很有意思呢当然在实际应用中我们还可以根据自己的需求对代码进行进一步的优化和扩展哦。