爬取微信公众号的历史文章

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time
import datetime
from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
sheet.title = '公众号推文'
header = ['标题', '时间', '链接']
sheet.append(header)


driver = webdriver.Chrome()
driver.get('https://weixin.sogou.com/')
wait = WebDriverWait(driver, 10)
input = wait.until(EC.presence_of_element_located((By.NAME, 'query')))
input.send_keys('凹凸数据')
driver.find_element_by_xpath("//input[@class='swz']").click()

num = 0

def get_news():
    global num
    time.sleep(1)
    news_lst = driver.find_elements_by_xpath("//li[contains(@id,'sogou_vr_11002601_box')]")
    for news in news_lst:
        source = news.find_elements_by_xpath('div[2]/div/a')[0].text
        if '凹凸数据' not in source:
            continue
        num += 1
        title = news.find_elements_by_xpath('div[2]/h3/a')[0].text
        date = news.find_elements_by_xpath('div[2]/div/span')[0].text
        if '前' in date:
            today = datetime.datetime.today()
            if '天' in date:
                delta = datetime.timedelta(days=int(date[0]))
            elif '小时' in date:
                delta = datetime.timedelta(hours=int(date.replace('小时前', ' ')))
            else:
                delta = datetime.timedelta(minutes=int(date.replace('分钟前', ' ')))
            date = str((today - delta).strftime('%Y-%m-%d'))
        date = datetime.datetime.strptime(date, '%Y-%m-%d').strftime('%Y-%m-%d')
        url = news.find_elements_by_xpath('div[2]/h3/a')[0].get_attribute('href')
        print(num, title, date)
        print('-' * 10)
        row = [title, date, url]
        sheet.append(row)

for i in range(10):
    get_news()
    if i == 9:
        break
    driver.find_element_by_id("sogou_next").click()

driver.find_element_by_name('top_login').click()

while True:
    try:
        next_page = driver.find_element_by_id("sogou_next")
        break
    except:
        time.sleep(3)

next_page.click()

while True:
    get_news()
    try:
        driver.find_element_by_id("sogou_next").click()
    except:
        break


driver.quit()

wb.save('凹凸数据历史文章.xlsx')  #保存为excel表格
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值