python爬虫抓取新闻并且植入自己的mysql远程数据库内
python爬虫抓取新闻并且植入自己的mysql远程数据库内!这个代码是我自己写了很久才写好的,分享给大家。喜欢的点个赞。
# -*- coding: utf-8 -*-
from xml.etree import ElementTree as ET
import datetime
import randomimport pymysql
from selenium import webdriver
from lxml import etree
from time import sleep
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import Bydef strreplace_v1(old_str, key, value):# 替换某个字符串的一个或某几个字符串new_str = old_str.replace(key, value)return new_strdef get_page_source_html(driver, urlinfo):driver.get(urlinfo)page_text = driver.page_sourcetree = etree.HTML(page_text)return treedef get_page_source_etree(driver):page_text = driver.page_sourcetree = etree.HTML(page_text)return treedef get_list_a(etree, xpathinfo):return etree.xpath(xpathinfo)def get_news_title(etree, xpathino):return etree.xpath(xpathino)def get_news_content(etree, xpathino):return etree.xpath(xpathino)def get_news_publish(etree, xpathino):return etree.xpath(xpathino)def getUA():uaList = [# 360"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",# chrome"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",# "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",# firefox# "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0","Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0",# ie11# "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",# ie8# "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.1357; 4399Box.1253; 4399Box.1357)",# 2345王牌# "Chrome/39.0.2171.99 Safari/537.36 2345Explorer/6.5.0.11018",# 搜狗# "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",# opera"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"]headers = random.choice(uaList)return headersdef get_desurl_list():# 所有的目标url集合。500个。urlinfo_list = []tree = ET.parse('sitemap.xml')url = tree.find("url")for rank in tree.iter('loc'):urlinfo_list.append(rank.text)return urlinfo_listdef createwailian(urlwllist, urlzhiru):str = strreplace_v1(urlzhiru, 'hrefinfo', urlwllist[random.randint(0, len(urlwllist))])return strif __name__ == "__main__":allwlurllist = get_desurl_list()options = Options()options.add_argument("--disable-desktop-notifications")options.add_argument('User-Agent=%s' % getUA())# options.add_argument('--proxy-server={0}'.format('103.37.141.69:80'))# 创建浏览器对象driver = webdriver.Chrome(options=options)urlend = ""urlbegin = 'http://www.106ms.com/index.php?list=6-'for urlstart in range(1, 10):print('当前正访问:{0}'.format(urlbegin + str(urlstart)))driver.get(urlbegin + str(urlstart))# //*[@id="menu-item-10"]/a# 点击SEO基础知识链接# driver.find_element(By.XPATH, value='//*[@id="menu-item-5"]/a').click()# 存储a标签的集合list_a = []# xpath获取到的集合是一个存储了大量的webelment对象的集合,想具体拿到属性信息,还得再写标签自身的xpath语法。# //*[@id="moar"]/section[2]/div/div[1]/div[1]/dl/dd/h3/aa_list = get_list_a(get_page_source_etree(driver), '//*[@id="moar"]/section[2]/div/div/div/dl/dd/h3/a')sleep(1)for a in a_list:href = a.xpath('./@href')[0]list_a.append(href)print("当前页面获取a标签集合长度为{0}".format(len(list_a)))sleep(1)# 遍历当前list_atry:db = pymysql.Connect(host='8.142.*.*', # 服务器ip地址port=3306, # mysql默认端口号user="106iiaa", # 用户名password="yrdsrootadmi3", # 密码charset="utf8", # 字符集db="hbdsa89aa" # 数据库)cursor = db.cursor()#xuanyan = "<p>本平台所发布的部分公开信息来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点,本平台所提供的信息,只供参考之用。不保证信息的准确性、有效性、及时性和完整性。如有侵权请联系:[14878741214]删除,谢谢合作!</p>"#urlzhiru = '<p>网站入口1:<a href="hrefinfo" target="_blank">网站入口地址</a></p><p>网站入口2:<a href="http://diyigefan.com/" target="_blank">diyigefan.com</a></p>'readnumber = 0base_url = 'http://www.106ms.com'for newsurl in list_a:try:wanquan = base_url + newsurl# print(wanquan)driver.get(wanquan)# title = driver.find_element(By.CLASS_NAME, value='article-title').text# content = driver.find_element(By.CLASS_NAME, value='article-content').text# newscontent = driver.find_element(By.XPATH, value='//div[@class="news_txt"]')#newscontentfordes = driver.find_element(By.CLASS_NAME, value='news_txt').text# /html/head/meta[6]newscontentfordes = driver.find_element(By.XPATH, value='/html/head/meta[6]')# 使用beautifulsoup封装html源码信息,然后开始提取内容。soup = BeautifulSoup(driver.page_source, features='lxml', from_encoding='utf-8')for s in soup('img'):s.extract()for s in soup('a'):s.extract()# 已经提前清除了img标签和a标签了allp = soup.find("article", {"class": "content text-left"}).findAll('div')paragraphs = []for x in allp:paragraphs.append(str(x))# 去掉最后一个元素的值。content2 = ''.join(paragraphs[0:-1])# print(content2)# 标题信息title = driver.find_element(By.XPATH, value='//*[@id="moar"]/section[2]/div/div/div/article/header/h2').textkeywords = title# content = content2 + createwailian(allwlurllist, urlzhiru)content = content2# content = newscontent + xuanyandes = str(newscontentfordes.strip())[0:120]sql = 'insert into news (title, keywords, des,content, author,publish,click,state,attr,attrdiy,flag,cate,uid) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'values = (title, keywords, des, content, 'admin',str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')),random.randint(100, 999),0, 0, 0, '画室新闻', 5, 3)cursor.execute(sql, values)db.commit()readnumber = readnumber + 1print("标题:{0}---插入数据库成功".format(title))except Exception as ee:print('发生了异常', ee)continueexcept Exception as e:# print('发生了异常', e)db.rollback()finally:cursor.close()db.close()sleep(5)print('本次任务成功植入{0}篇软文.'.format(readnumber))sleep(600)driver.quit()
前提是,你需要提前安装好里面使用到了一些插件包。
否则是会报错的。
相关文章:
python爬虫抓取新闻并且植入自己的mysql远程数据库内
python爬虫抓取新闻并且植入自己的mysql远程数据库内!这个代码是我自己写了很久才写好的,分享给大家。喜欢的点个赞。 # -*- coding: utf-8 -*- from xml.etree import ElementTree as ET import datetime import randomimport pymysql from selenium im…...
netty实现简单的客户端、服务端互相发消息
引入maven依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.20.Final</version> </dependency> 一、服务端 1、创建服务端启动类 public class MyServer {public static voi…...
利用jmeter完成简单的压力测试
Jmeter是一个非常好用的压力测试工具。Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好。 1、什么是压力测试 顾名思义:压力测试,就是 被测试的系统,在一定的访问压…...
【手写数据库toadb】toadb物理存储模型,数据库物理存储原理,物理文件组织关系以及行列混合模型存储结构
存储模型概述 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段…...
MySQL-----DDL基础操作
SQL通用语法 1.SQL语句可以单行或多行书写,以分号结尾。 2. SQL语句可以使用空格/缩进来增强语句的可读性。 3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。 4.注释: 单行注释:--注释内容或#注释内容(MySQL特有) 多行注释:/*注释…...
【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程
说明: 安装与卸载中,用户全部切换成为 root,一旦安装,普通用户就能使用。 一、卸载内置环境 1、卸载不要的环境 [rootVM-8-5-centos ~]$ ps ajx | grep mariadb # 先检查是否有mariadb存在 13134 14844 14843 13134 pts/0 14843…...
理解React中的setState()方法
在React中,setState()方法是一个非常重要的概念,它用于更新组件的状态并触发重新渲染。本文将探讨setState()的使用方法、工作原理以及一些基本的用法。 setState()方法简介 setState()是React组件中用于更新状态的方法之一。它接受一个对象或一个函数作…...
数据库管理-第144期 深入使用EMCC-01(20240204)
数据库管理144期 2024-02-04 数据库管理-第144期 深入使用EMCC-01(20240204)1 用户管理2 配置告警动作3 配置意外事件规则总结 数据库管理-第144期 深入使用EMCC-01(20240204) 作者:胖头鱼的鱼缸(尹海文&am…...
flask_django_python五金电商网络营销的可视化分析研究
前面部分完成了系统需求分析,了解到新闻数据业务方面的需求,系统主要分为用户管理、五金信息管理、在线留言、系统管理等功能。销的可视化研究,并对这些数据进行处理, 然后对这些数据进行可视化分析和统计。 Python 爬虫技术目前来…...
Java并发(二十三)----同步模式之保护性暂停
1、定义 即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列 JDK 中,join 的实现…...
###C语言程序设计-----C语言学习(9)#函数基础
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 基础知识的学习 1.函数的定义 函数是一个完成特定工作的独立程序模块&…...
Dockerfile文件参数配置和使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Java实现婚恋交友网站 JAVA+Vue+SpringBoot+MySQL
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…...
React16源码: React中详解在渲染阶段Suspend的源码实现
Suspend 挂起详解 1 )概述 在react的更新过程当中,它的任务是可以被挂起的,也就是 Suspend关于 Suspend 字面意思就是挂起在某次更新的任务更新完成之后,暂时不提交 在 react更新中,分为两个阶段,首先是re…...
mac电脑风扇控制软件:Macs Fan Control Pro for mac 激活版
Macs Fan Control 是一款专门为 Mac 用户设计的软件,它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度,以提高设备的散热效果,减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温度和…...
easyexcel解析跨多行的数据
在使用easyexcel解析excel文件的时候,存在某列横跨多行,那么存在解析出的对象的某些属性是没有值的,那么我们要怎么处理呢?代码如下 定义实体对应excel文件 public class EtcParkingReconciliationDailyImportModel implements S…...
双目相机立体匹配基础
双目匹配就是用左相机和右相机去拍摄同一个点,目的是找到三维世界的同一个点,也就是在左相机和右相机中的成像点之间的像素差(视差),根据视差去求解深度,那么找到左相机点到右相机的同一个对应点这个过程就…...
【图论】网络流
网络流目前只整理模板,学习的话这篇博客可能不太适合 代码参考下方博客,加了一些自己的注释 算法学习笔记(28): 网络流究级的最大流算法:ISAP与HLPP FF 和 EK 仅用作理解代码,赛时请使用 Dinic 或 ISAP 下文建图方式都基于链式…...
【Matplotlib】figure方法 你真的会了吗!?
🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…...
[C++]继承(续)
一、基类和派生类对象赋值转换 在public继承时,父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用,我们认为是天然的,中间不产生临时对象,也叫作父子类赋值兼容规则(切割/切片ÿ…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
