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 不同对象比较大小示例探讨
Aug 21 Python
python使用pymysql实现操作mysql
Sep 13 Python
python学习入门细节知识点
Mar 29 Python
python字符串与url编码的转换实例
May 10 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
python对于requests的封装方法详解
Jan 03 Python
python 二维数组90度旋转的方法
Jan 28 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
Python实现打印实心和空心菱形
Nov 23 Python
Python统计文本词汇出现次数的实例代码
Feb 27 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文件上传表单摘自drupal的代码
2011/02/15 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
Python中列表元素转为数字的方法分析
2016/06/14 Python
使用Python绘制图表大全总结
2017/02/11 Python
Python补齐字符串长度的实例
2018/11/15 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
解析Python的缩进规则的使用
2019/01/16 Python
python 使用shutil复制图片的例子
2019/12/13 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
2014年班主任自我评价范文
2014/04/23 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis