• 大小: 10KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Python
  • 标签: python  爬虫  

资源简介

通过搜狗搜索中的微信搜索入口来爬取微信公众号上的文章 时间,文章标题,文章地址,文章简介、图片

资源截图

代码片段和文件信息

#!/usr/bin/python
# coding: utf-8

‘‘‘
总的来说就是通过搜狗搜索中的微信搜索入口来爬取
2017-04-13 by Jimy_fengqi
‘‘‘
import urllib

import xlwt as xlwt

from urllib import parse
from pyquery import PyQuery as pq
from selenium import webdriver

import requests
import time
import re
import os


def dirsIsExists(path):
    if os.path.exists(path):
        message = ‘OK the “%s“ file exists.‘
    else:
        message = ‘Sorry I cannot find the “%s“ file.‘
        os.makedirs(path)
    print(message)

    #爬虫主函数
def saveImgTwo(pathnameList):
    dirsIsExists(path)
    Length = len(nameList)
    x = 0
    for i in range(0 Length):
        imgurl = nameList[i][“pic“]
        print(“图片%d:%s\n“%(i+1 imgurl))
        if ‘http‘ in imgurl:
            print (“第 %s“ %x + “张图片“)
            urllib.request.urlretrieve(imgurl path+‘/‘+‘/%s.jpg‘ % x)
            x += 1
            #判断目录是否存在不存在就生成

class weixin_spider:

    def __init__(self keywords):
        ‘ 构造函数 ‘
        self.keywords = keywords
        # 搜狐微信搜索链接入口
        #self.sogou_search_url = ‘http://weixin.sogou.com/weixin?type=1&query=%s&ie=utf8&_sug_=n&_sug_type_=‘ % quote(self.keywords)
        self.sogou_search_url = ‘http://weixin.sogou.com/weixin?type=1&query=%s&ie=utf8&s_from=input&_sug_=n&_sug_type_=‘ % parse.quote(self.keywords)

        # 爬虫伪装头部设置
        self.headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0‘}

        # 设置操作超时时长
        self.timeout = 5

        # 爬虫模拟在一个request.session中完成
        self.s = requests.Session()

        #excel 第一行数据
        self.excel_data=[u‘编号‘u‘时间‘u‘文章标题‘u‘文章地址‘u‘文章简介‘]
        #定义excel操作句柄
        self.excle_w=xlwt.Workbook()


    #搜索入口地址,以公众为关键字搜索该公众号
    def get_search_result_by_keywords(self):
        self.log(u‘搜索地址为:%s‘ % self.sogou_search_url)
        return self.s.get(self.sogou_search_url headers=self.headers timeout=self.timeout).content

    #获得公众号主页地址
    def get_wx_url_by_sougou_search_html(self sougou_search_html):
        doc = pq(sougou_search_html)
        #print doc(‘p[class=“tit“]‘)(‘a‘).attr(‘href‘)
        #print doc(‘div[class=img-box]‘)(‘a‘).attr(‘href‘)
        #通过pyquery的方式处理网页内容,类似用beautifulsoup,但是pyquery和jQuery的方法类似,找到公众号主页地址
        return doc(‘div[class=txt-box]‘)(‘p[class=tit]‘)(‘a‘).attr(‘href‘)

    #使用webdriver 加载公众号主页内容,主要是js渲染的部分
    def get_selenium_js_html(self url):
        browser = webdriver.PhantomJS(executable_path=r‘D:\mytoolssoft\idea_Tool\phantomjs-2.1.1-windows\bin\phantomjs.exe‘)

        browser.get(url)
        time.sleep(3)
        # 执行js得到整个页面内容
        html = browser.execute_script(“return document.documentElement.outerHTML“)
        browser.close()
        return html
    #获取公众号文章内容
    def parse_wx_articles_by_html(self selenium_html):
        doc = pq(selenium_html)
        print (u‘开始查找内容msg‘)
        return doc(‘div[class=“weui_media_box appmsg“]‘)

    #有的公众号仅仅有

评论

共有 条评论