分享好友 最新动态首页 最新动态分类 切换频道
通过搜狗搜索引擎爬取微信公众号文章
2024-12-23 22:14
#!/usr/bin/env python

通过搜狗搜索引擎爬取微信公众号文章

# coding=utf-8 import time import os import requests import re import urllib from urllib import request from lxml import etree from bs4 import BeautifulSoup import pymysql as mdb import logging import hashlib class weichat_spider: def __init__(self, ): self.check = True self.htmlPath = 'E:/A_crawling/data/raw/htmlPath/weichat/' self.PicPath = 'E:/A_crawling/data/raw/htmlPath/weichat/' self.headers = None self.search_url = None self.sublist = None self.config = None self.conn = None # 从数据库查询公众号列表 def getSubList(self): self.config = {'host': 'xxx.xxx.x.xx', 'port': 3306, 'user': 'root', 'passwd': '*****', 'db': '****', 'charset': 'utf8'} self.conn = mdb.connect(**self.config) cursor = self.conn.cursor() try: sql = http://g8akg8.riyuangf.com/static/image/nopic320.pngselect subEname,subName from subscription where status= 1 http://g8akg8.riyuangf.com/static/image/nopic320.png cursor.execute(sql) temp = cursor.fetchall() self.conn.commit() return temp except Exception as e: logging.error(e) self.conn.rollback() finally: cursor.close() self.conn.close() # 转换成哈希值 @staticmethod def toHash(x): m = hashlib.md5() m.update(x.encode('utf-8')) return m.hexdigest() # 运行程序 def run(self): self.sublist = self.getSubList() for self.ename, self.name in self.sublist: self.search_url = http://g8akg8.riyuangf.com/static/image/nopic320.pnghttp://weixin.sogou.com/weixin?type=1&s_from=input&query=%s&ie=utf8&_sug_=y&_sug_type_=http://g8akg8.riyuangf.com/static/image/nopic320.png % self.name self.headers = {http://g8akg8.riyuangf.com/static/image/nopic320.pngUser-Agenthttp://g8akg8.riyuangf.com/static/image/nopic320.png: http://g8akg8.riyuangf.com/static/image/nopic320.pngMozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0http://g8akg8.riyuangf.com/static/image/nopic320.png, http://g8akg8.riyuangf.com/static/image/nopic320.pngRefererhttp://g8akg8.riyuangf.com/static/image/nopic320.png: self.search_url} print('开始抓取公众号[' + self.name + ']' + time.strftime('%Y-%m-%d') + '的文章' + ':') self.get_list(self.search_url, self.ename) # 获取被爬取公众号的url连接,并且将url传入爬取的函数 def get_list(self, search_url, ename): # html = requests.get(search_url, headers=self.headers, verify=False).content weichat_id = ename html_catalog = requests.get(search_url, verify=False).text selector = etree.HTML(html_catalog.encode(http://g8akg8.riyuangf.com/static/image/nopic320.pngUTF-8http://g8akg8.riyuangf.com/static/image/nopic320.png)) content = selector.xpath('/html/body/div[2]/div/div[4]/ul/li[1]/div/div[2]/p[1]/a') for list_catalog in content: list_catalog = list_catalog.attrib.get('href') self.get_content(list_catalog, weichat_id) # 获得公众号中文章的详情内容 def get_content(self, each, weichat_id): # article = requests.get(each, headers=self.headers, verify=False).content html_art_url = requests.get(each, verify=False).text soup = BeautifulSoup(html_art_url, 'html.parser') soup_url = soup.findAll(http://g8akg8.riyuangf.com/static/image/nopic320.pngscripthttp://g8akg8.riyuangf.com/static/image/nopic320.png)[7] # 循环获取公众号文章URL for list_art in soup_url: list_art_url_s = re.findall(r'content_url(.*?),', list_art) # 获取公众号文章 for list_art_url in list_art_url_s: list_art_url = 'http://mp.weixin.qq.com' + list_art_url.replace('http://g8akg8.riyuangf.com/static/image/nopic320.png:http://g8akg8.riyuangf.com/static/image/nopic320.png', '').replace('http://g8akg8.riyuangf.com/static/image/nopic320.png', '').replace('amp;', '') content = requests.get(list_art_url, verify=False) art_hash_code = self.toHash(content.url) # 以HTML格式保存文章到本地 htmlPath = self.htmlPath + weichat_id if not os.path.isdir(htmlPath): os.mkdir(htmlPath) self.get_img_text(list_art_url, weichat_id, content, htmlPath + '/%s.html' % art_hash_code) # 获取公众号图片和内容并且保存到本地文件夹 def get_img_text(self, list_art_url, weichat_id, r, out_path): try: # 打开保存路径的文件out_path f = open(out_path, 'w', encoding='utf-8') text = r.text # 保存图片数据 reg = r'-src=http://g8akg8.riyuangf.com/static/image/nopic320.png(https://mmbiz.qpic.cn/.+?)http://g8akg8.riyuangf.com/static/image/nopic320.png ' # print(reg) pic_re = re.compile(reg) html_art_url = requests.get(list_art_url, verify=False).text pic_list = re.findall(pic_re, html_art_url) for pic_url in pic_list: print(pic_url) pic_path = self.PicPath + weichat_id + '/' + self.toHash(list_art_url) + '/' if not os.path.isdir(pic_path): os.mkdir(pic_path) pic_url_new = os.path.join(pic_path, '%s.jpeg' % self.toHash(pic_url)) urllib.request.urlretrieve(pic_url, pic_url_new) # 替换data-src里面的路径,将图片换成本地路径,使其由JS加载的动态网页变成静态HTML,然后再解析保存在本地的HTML存储到数据库 pic_url_all = 'data-src=http://g8akg8.riyuangf.com/static/image/nopic320.png' + pic_url + 'http://g8akg8.riyuangf.com/static/image/nopic320.png' rep_pic_url = self.toHash(list_art_url) + '/' + '%s.jpeg' % self.toHash(pic_url) rep_pic_url_all = 'src=http://g8akg8.riyuangf.com/static/image/nopic320.png' + rep_pic_url + 'http://g8akg8.riyuangf.com/static/image/nopic320.png' text = text.replace(pic_url_all, rep_pic_url_all) # 替换完text里的数据后将数据写入并保存文件到本地 f.write(text) f.flush() f.close() # 解析保存到本地的文章 self.explain_art(out_path) except Exception as e: logging.error('save file:[e=%s,out_path=%s]' % (e, out_path)) # 解析下载到本地的公众号文章并且尝试存入数据库 @staticmethod def explain_art(local_art_url): # content = requests.get(local_art_url, verify=False).text htmlfile = open(local_art_url, 'r', encoding='UTF-8') htmlpage = htmlfile.read() content_html = BeautifulSoup(htmlpage, 'lxml') selector = etree.HTML(content_html.encode(http://g8akg8.riyuangf.com/static/image/nopic320.pngUTF-8http://g8akg8.riyuangf.com/static/image/nopic320.png)) # 文章标题 art_title = selector.xpath('//*[@id=http://g8akg8.riyuangf.com/static/image/nopic320.pngactivity-namehttp://g8akg8.riyuangf.com/static/image/nopic320.png]')[0].text # 文章作者 art_author_list = selector.xpath('/html/body/div[1]/div/div[1]/div[1]/div[1]/em[2]') if len(art_author_list) > 0: art_author = art_author_list[0].text # 文章发表时间 art_time = selector.xpath('//*[@id=http://g8akg8.riyuangf.com/static/image/nopic320.pngpost-datehttp://g8akg8.riyuangf.com/static/image/nopic320.png]')[0].text # 文章来源 art_source = selector.xpath('//*[@id=http://g8akg8.riyuangf.com/static/image/nopic320.pngpost-userhttp://g8akg8.riyuangf.com/static/image/nopic320.png]')[0].text # 文章正文内容 # art_connect = selector.xpath('//*[@id=http://g8akg8.riyuangf.com/static/image/nopic320.pngactivity-namehttp://g8akg8.riyuangf.com/static/image/nopic320.png]') art_connect = content_html.findAll('div', class_='rich_media_content')[0].contents # print(art_connect) if __name__ == '__main__': # @version : 3.5 # @Author : robot_lei # @Software: PyCharm Community Edition print(http://g8akg8.riyuangf.com/static/image/nopic320.pnghttp://g8akg8.riyuangf.com/static/image/nopic320.pnghttp://g8akg8.riyuangf.com/static/image/nopic320.png/* * * _oo8oo_ * o8888888o * 88http://g8akg8.riyuangf.com/static/image/nopic320.png . http://g8akg8.riyuangf.com/static/image/nopic320.png88 * (| -_- |) * 0 = /0 * ___/'==='___
最新文章
网络安全应急响应工具之-流量安全取证NetworkMiner
在前面的一些文章中,用了很多的章节介绍流量分析和捕获工具wireshark。Wireshark是一款通用的网络协议分析工具,非常强大,关于wireshark的更多介绍,请关注专栏,wireshark从入门到精通。本文将介绍一个专
艺术、生成式AI与创造性新纪元,让创造力赋予我们幸福感
引言在科技日新月异的今天,生成式人工智能(Generative AI)正以前所未有的速度改变着我们的世界。这一技术的崛起,不仅重塑了多个行业,也对艺术领域产生了深远的影响。结合生成式AI与艺术,我们的时代不仅更需要艺术,而且需要一种融合
网站文章多久会被收录下来,如何提高网站文章被百度收录率:内容质量与网站布局的关键策略
网站运营者和内容制作者都十分关注文章被收录的时间。这个因素不仅关系到网站权重的提升,还与网站吸引流量、实现价值紧密相连。但有时,不管怎么更新,百度就是不肯收录文章,让人耗费了大量精力却无果。内容优劣至关重要。若内容杂乱无章
CANPro协议分析平台 1.50.2.367 官方版
CANPro协议分析平台官方版是一款高效专业的CAN高层协议分析工具,CANPro协议分析平台最新版功能强悍,支持与周立功CAN分析仪配合使用,能够帮助用户分析iCAN、DeviceNet、SAEJ1939、CANopen等基CAN-bus网络的高层协议,CANPro协议分析平台
长乐SEO整站优化,驱动企业网站排名飞跃
长乐SEO提供整站优化服务,全方位提升网站排名,助力企业快速崛起,实现网络营销新突破。随着互联网的普及,越来越多的企业开始重视网络营销,希望通过网站推广提升品牌知名度和市场份额,在众多企业中,如何脱颖而出,成为行业佼佼者,成
手机号码隐私保护与管理全攻略,如何安全查看归属地信息
在现代社会中,手机号码不仅是个人身份的标识,更是日常沟通和商务交流中不可或缺的一部分。然而,随着网络诈骗和隐私泄露事件的频发,如何安全、有效地管理和使用手机号码,成为了人们关注的焦点。本文将从多个层面探讨手机号码的结构、隐
瑞幸咖啡SEO崛起之道,揭秘SEO优化策略助力品牌腾飞
瑞幸咖啡凭借有效的SEO优化策略,成功提升了品牌知名度。通过精准关键词布局、高质量内容创作和外部链接建设,瑞幸咖啡在搜索引擎中排名提升,吸引了大量潜在顾客,助力品牌快速崛起。关键词策略分析网站优化策略解析外链建设策略探讨数据
SEO优化文章写作技巧:如何快速写出高排名高质量内容
这将帮助你制定出吸引性十足且能够回应用户找寻信息时情感上受到重视和尊重的文章。选好关键字并使用正确方法来优化文章中心思想。便可将这些语义理念整合贯彻到整篇文章中去;1. 首先,要明确目标读者的需求。在开始写作之前,应当了解你的
百度快速收录系统 百度速录系统助力,关键词文章秒上热搜榜
在当今这个信息爆炸的时代,互联网已成为企业展示自我、推广品牌、吸引客户不可或缺的重要平台然而,面对海量的网络信息,如何让自己的网站或内容在浩瀚的网海中脱颖而出,成为众多企业和个人关注的焦点在此背景下,“百度快速收录系统”以
网站优化工具:让您的网站快速崛起,获取更多流量与曝光
SEO优化工具:这类工具帮助你优化网站内容,以便更好地符合搜索引擎的算法规则,提高在搜索结果中的排名。页面速度优化工具:网站的加载速度直接影响用户体验和搜索排名,因此通过这些工具可以对网站进行优化,减少加载时间。内容优化工具
相关文章
推荐文章
发表评论
0评