python爬虫抓取新闻并且植入自己的mysql远程数据库内

2024-02-05 14:12

本文主要是介绍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远程数据库内的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681172

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统