python抓取搜狗微信公众号文章


Posted in Python onApril 01, 2019

初学python,抓取搜狗微信公众号文章存入mysql

mysql表:

python抓取搜狗微信公众号文章

python抓取搜狗微信公众号文章

代码:

import requests
import json
import re
import pymysql
 
# 创建连接
conn = pymysql.connect(host='你的数据库地址', port=端口, user='用户名', passwd='密码', db='数据库名称', charset='utf8')
# 创建游标
cursor = conn.cursor()

cursor.execute("select * from hd_gzh")
effect_row = cursor.fetchall()
from bs4 import BeautifulSoup

socket.setdefaulttimeout(60)
count = 1
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'}
#阿布云ip代理暂时不用
# proxyHost = "http-cla.abuyun.com"
# proxyPort = "9030"
# # 代理隧道验证信息
# proxyUser = "H56761606429T7UC"
# proxyPass = "9168EB00C4167176"

# proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
#  "host" : proxyHost,
#  "port" : proxyPort,
#  "user" : proxyUser,
#  "pass" : proxyPass,
# }

# proxies = {
#   "http" : proxyMeta,
#   "https" : proxyMeta,
# }

#查看是否已存在数据
def checkData(name):
  sql = "select * from gzh_article where title = '%s'"
  data = (name,)
  count = cursor.execute(sql % data)
  conn.commit()
  if(count!=0):
    return False
  else:
    return True
#插入数据
def insertData(title,picture,author,content):
  sql = "insert into gzh_article (title,picture,author,content) values ('%s', '%s','%s', '%s')"
  data = (title,picture,author,content)
  cursor.execute(sql % data)
  conn.commit()
  print("插入一条数据")
  return
  
for row in effect_row:
  newsurl = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query=' + row[1] + '&ie=utf8&_sug_=n&_sug_type_='
  res = requests.get(newsurl,headers=headers)
  res.encoding = 'utf-8'
  soup = BeautifulSoup(res.text,'html.parser')
  url = 'https://weixin.sogou.com' + soup.select('.tit a')[0]['href']
  res2 = requests.get(url,headers=headers)
  res2.encoding = 'utf-8'
  soup2 = BeautifulSoup(res2.text,'html.parser')
  pattern = re.compile(r"url \+= '(.*?)';", re.MULTILINE | re.DOTALL)
  script = soup2.find("script")
  url2 = pattern.search(script.text).group(1)
  res3 = requests.get(url2,headers=headers)
  res3.encoding = 'utf-8'
  soup3 = BeautifulSoup(res3.text,'html.parser')
  print()
  pattern2 = re.compile(r"var msgList = (.*?);$", re.MULTILINE | re.DOTALL)
  script2 = soup3.find("script", text=pattern2)
  s2 = json.loads(pattern2.search(script2.text).group(1))
  #等待10s
  time.sleep(10)
  
  for news in s2["list"]:
    articleurl = "https://mp.weixin.qq.com"+news["app_msg_ext_info"]["content_url"]
    articleurl = articleurl.replace('&','&')
    res4 = requests.get(articleurl,headers=headers)
    res4.encoding = 'utf-8'
    soup4 = BeautifulSoup(res4.text,'html.parser')
    if(checkData(news["app_msg_ext_info"]["title"])):
      insertData(news["app_msg_ext_info"]["title"],news["app_msg_ext_info"]["cover"],news["app_msg_ext_info"]["author"],pymysql.escape_string(str(soup4)))
    count += 1
    #等待5s
    time.sleep(10)
    for news2 in news["app_msg_ext_info"]["multi_app_msg_item_list"]:
      articleurl2 = "https://mp.weixin.qq.com"+news2["content_url"]
      articleurl2 = articleurl2.replace('&','&')
      res5 = requests.get(articleurl2,headers=headers)
      res5.encoding = 'utf-8'
      soup5 = BeautifulSoup(res5.text,'html.parser')
      if(checkData(news2["title"])):
        insertData(news2["title"],news2["cover"],news2["author"],pymysql.escape_string(str(soup5)))
      count += 1
      #等待10s
      time.sleep(10)
cursor.close()
conn.close()
print("操作完成")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
SQLite3中文编码 Python的实现
Jan 11 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
pandas数据分组和聚合操作方法
Apr 11 Python
Python Socket编程之多线程聊天室
Jul 28 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
Python机器学习之逻辑回归
May 11 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 #Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 #Python
Python批量删除只保留最近几天table的代码实例
Apr 01 #Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
Apr 01 #Python
python assert的用处示例详解
Apr 01 #Python
使用Python操作FTP实现上传和下载的方法
Apr 01 #Python
Python提取特定时间段内数据的方法实例
Apr 01 #Python
You might like
PHP实现图片简单上传
2006/10/09 PHP
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
关于全局变量和局部变量的那些事
2013/01/11 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Python爬取京东的商品分类与链接
2016/08/26 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Python编写打字训练小程序
2019/09/26 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
python实现随机加减法生成器
2020/02/24 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
python tkinter实现连连看游戏
2020/11/16 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
行政助理的岗位职责
2014/02/18 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript