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使用xlrd模块读写Excel文件的方法
May 06 Python
简单介绍Python中的readline()方法的使用
May 24 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python内置模块turtle绘图详解
Dec 09 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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中取得URL的根域名的代码
2011/03/23 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python opencv之SURF算法示例
2018/02/24 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
python判断设备是否联网的方法
2018/06/29 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
工厂保洁员岗位职责
2013/12/04 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android