目录

  • 一 、实现思路
  • 二、获取url变化规律
  • 三、爬取新闻名称及其超链接
  • 四、判断与主题的契合度
  • 四、输出结果
  • 五、总代码

一 、实现思路

本次爬取搜狐新闻时政类

获取url——爬取新闻名称及其超链接——判断与主题契合度——得到最终结果

二、获取url变化规律

观察发现,搜狐新闻页面属于动态页面
但是F12——network——XHR下并没有文件所以不能从这里找
从ALL中发现该文件中有想要找的内容

发现该文件属于js文件

观察四个feed开头的文件的url规律

page变化 callback变化无规律 最后的数字每页+8 将callback去掉发现对网页内容无影响
所以最终的page获取代码 采用字符串拼接的形式

for p in range(1,10):p2=1603263206992+p*8 url='https://v2.sohu.com/public-api/feed?scene=CATEGORY&sceneId=1460&page='+str(p)+'&size=20&_='+str(p2)

三、爬取新闻名称及其超链接

本次用正则表达式获取

实现代码:

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36','cookie':'itssohu=true; BAIDU_SSP_lcr=https://news.hao123.com/wangzhi; IPLOC=CN3300; SUV=201021142102FD7T; reqtype=pc; gidinf=x099980109ee124d51195e802000a3aab2e8ca7bf7da; t=1603261548713; jv=78160d8250d5ed3e3248758eeacbc62e-kuzhE2gk1603261903982; ppinf=2|1603261904|1604471504|bG9naW5pZDowOnx1c2VyaWQ6Mjg6MTMxODgwMjEyODc2ODQzODI3MkBzb2h1LmNvbXxzZXJ2aWNldXNlOjMwOjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMHxjcnQ6MTA6MjAyMC0xMC0yMXxlbXQ6MTowfGFwcGlkOjY6MTE2MDA1fHRydXN0OjE6MXxwYXJ0bmVyaWQ6MTowfHJlbGF0aW9uOjA6fHV1aWQ6MTY6czExZjVhZTI2NTJiNmM3Nnx1aWQ6MTY6czExZjVhZTI2NTJiNmM3Nnx1bmlxbmFtZTowOnw; pprdig=L2Psu-NwDR2a1BZITLwhlxdvI2OrHzl6jqQlF3zP4z70gqsyYxXmf5dCZGuhPFZ-XWWE5mflwnCHURGUQaB5cxxf8HKpzVIbqTJJ3_TNhPgpDMMQdFo64Cqoay43UxanOZJc4-9dcAE6GU3PIufRjmHw_LApBXLN7sOMUodmfYE; ppmdig=1603261913000000cfdc2813caf37424544d67b1ffee4770'}res=requests.get(url,headers=headers)soup=BeautifulSoup(res.text,'lxml')news=re.findall('"mobileTitle":"(.*?)",',str(soup))herf=re.findall('"originalSource":"(.*?)"',str(soup))#news=soup.find_all("div",attrs={'class':'news-wrapper'})#html=etree.HTML(res.text)#news=html.xpath('/html/body/div[2]/div[1]/div[2]/div[2]/div/div[3]/div[3]/h4/a/text()')news_dic=dict(zip(news,herf))#把标题和链接储存到字典for k,v in news_dic.items():news_dictall[k]=v #每一页的字典合并

四、判断与主题的契合度

def ifsim(topicwords):news_dicfin={}news_dic=getdata()ana.set_stop_words('D:\作业\python\文本挖掘\数据集\新闻数据集\data\stopwords.txt') # 输入停用词for k,v in news_dic.items():word_list=ana.extract_tags(k,topK=50,withWeight=False) #去除停用词+词频分析#word_lil.append(word_list)word_lil=[]for i in word_list:word_lil.append([i])#将分词转化为list in list 形式以便传入dictionaryword_dic=Dictionary(word_lil)#转化为dictionary词典形式 以便分析d=dict(word_dic.items())docwords=set(d.values())#相关度计算commwords=topicwords.intersection(docwords)#取交集if len(commwords)>0:#交集>0符合条件的存入最终的字典news_dicfin[k]=vprint(news_dicfin)

若直接输出word_dic结果为:

docwords输出结果为:

word_list输出结果:

word_lil输出结果为:

d的输出结果为:

四、输出结果

本次通过判断标题与我给定主题词的相同的个数即交集>0即判定该词属于主题模型
并将其存入最终字典
news_sicfin的输出结果为:

五、总代码

import requests
from bs4 import BeautifulSoup
import jieba
from gensim.corpora.dictionary import Dictionary
import re
import jieba.analyse as anadef getdata():#news_all=[]news_dictall={}for p in range(1,10):p2=1603263206992+p*8 url='https://v2.sohu.com/public-api/feed?scene=CATEGORY&sceneId=1460&page='+str(p)+'&size=20&_='+str(p2)headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36','cookie':'itssohu=true; BAIDU_SSP_lcr=https://news.hao123.com/wangzhi; IPLOC=CN3300; SUV=201021142102FD7T; reqtype=pc; gidinf=x099980109ee124d51195e802000a3aab2e8ca7bf7da; t=1603261548713; jv=78160d8250d5ed3e3248758eeacbc62e-kuzhE2gk1603261903982; ppinf=2|1603261904|1604471504|bG9naW5pZDowOnx1c2VyaWQ6Mjg6MTMxODgwMjEyODc2ODQzODI3MkBzb2h1LmNvbXxzZXJ2aWNldXNlOjMwOjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMHxjcnQ6MTA6MjAyMC0xMC0yMXxlbXQ6MTowfGFwcGlkOjY6MTE2MDA1fHRydXN0OjE6MXxwYXJ0bmVyaWQ6MTowfHJlbGF0aW9uOjA6fHV1aWQ6MTY6czExZjVhZTI2NTJiNmM3Nnx1aWQ6MTY6czExZjVhZTI2NTJiNmM3Nnx1bmlxbmFtZTowOnw; pprdig=L2Psu-NwDR2a1BZITLwhlxdvI2OrHzl6jqQlF3zP4z70gqsyYxXmf5dCZGuhPFZ-XWWE5mflwnCHURGUQaB5cxxf8HKpzVIbqTJJ3_TNhPgpDMMQdFo64Cqoay43UxanOZJc4-9dcAE6GU3PIufRjmHw_LApBXLN7sOMUodmfYE; ppmdig=1603261913000000cfdc2813caf37424544d67b1ffee4770'}res=requests.get(url,headers=headers)soup=BeautifulSoup(res.text,'lxml')news=re.findall('"mobileTitle":"(.*?)",',str(soup))herf=re.findall('"originalSource":"(.*?)"',str(soup))#news=soup.find_all("div",attrs={'class':'news-wrapper'})#html=etree.HTML(res.text)#news=html.xpath('/html/body/div[2]/div[1]/div[2]/div[2]/div/div[3]/div[3]/h4/a/text()')news_dic=dict(zip(news,herf))#把标题和链接储存到字典for k,v in news_dic.items():news_dictall[k]=v #每一页的字典合并return(news_dictall)#返回总字典
def ifsim(topicwords):news_dicfin={}news_dic=getdata()ana.set_stop_words('D:\作业\python\文本挖掘\数据集\新闻数据集\data\stopwords.txt') # 输入停用词for k,v in news_dic.items():word_list=ana.extract_tags(k,topK=50,withWeight=False) #去除停用词+词频分析#word_lil.append(word_list)word_lil=[] for i in word_list:word_lil.append([i])#将分词转化为list in list 形式以便传入dictionaryword_dic=Dictionary(word_lil)#转化为dictionary词典形式 以便分析d=dict(word_dic.items())docwords=set(d.values())#相关度计算commwords=topicwords.intersection(docwords)#取交集if len(commwords)>0:#交集>0符合条件的存入最终的字典news_dicfin[k]=vprint(news_dicfin)
if __name__=='__main__':topicwords={"疫情","新冠","肺炎","确诊","病例"}ifsim(topicwords)

Python爬虫——主题爬取搜狐新闻(步骤及代码实现)相关推荐

  1. python爬虫实现爬取网页主页信息(html代码)

    python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...

  2. Python学习笔记(11) 如何用爬虫完整抓取搜狐新闻文章?

    一.操作步骤 今天教大家抓取搜狐的新闻文章,重点讲解怎么抓取到完整的正文内容,怎么批量抓取到更多新闻,方法是通用的,大家可以应用到其他新闻网站的抓取,总体操作步骤如下: 二.案例+操作步骤 采集规则: ...

  3. selenium无头浏览爬取搜狐新闻

    个人笔记 import requests import re from lxml import etree from selenium import webdriver from selenium.w ...

  4. python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址

    随着人们生活水平的提高,肯德基这类的快餐消费的十分火爆,成为小朋友和年轻人的最爱,我们到一个地方想要找到肯德基店面,会根据导航获取肯德基地址,那你知道我们也可以使用python爬虫获取KFC地址吗?我 ...

  5. python爬虫搜狐新闻_应用案例2:爬取搜狐体育的新闻信息

    爬虫学习使用指南 Auth: 王海飞 Data:2018-06-25 Email:779598160@qq.com github:https://github.com/coco369/knowledg ...

  6. #python爬虫#爬取搜狐股票

    爬取搜狐股票 完整程序 完整程序 利用搜狐新闻的股票列表,构造url爬取信息 import requests from bs4 import BeautifulSoup import json imp ...

  7. python爬取搜狐新闻网站所有新闻的标题和正文并按阅读量排行输出

    # _*_ coding: utf-8 _*_ """实现定量爬取搜狐网站新闻 Author: HIKARI Version: V 0.2 ""&qu ...

  8. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

  9. python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析

    标签:pattern   div   mat   txt   保存   关于   json   result   with open 关于正则表达式的更多用法,可参考链接:https://blog.c ...

最新文章

  1. CLion使用WSL的cmake报错解决: configure_file Problem configuring file Call Stack (most recent call first):
  2. 圆周率派在电脑上怎样输入_Mac电脑上FCPX软件怎样导入3D LUT调色预设
  3. 2009年的强悍流行语~
  4. SBO中流程控制功能的实现-SBO_SP_TransactionNotification
  5. 命令 / Linux / 常用的解压缩的命令
  6. RHQ指标的WildFly子系统
  7. vim配置之taglist插件安装
  8. python使用 GPUs
  9. 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序
  10. JQuery官方学习资料(译):类型
  11. Kindle刷安卓双系统的方法
  12. 敏捷开发模式下的BA岗
  13. 用html创建数独,数独做不出来怎么办
  14. 易中天品汉代风云人物02: 冤死的晁错(下)
  15. AttributeError: module cv2.face has no attribute 'createEigenFaceRecognizer'
  16. elasticsearch-数据聚合
  17. 谈谈Line-height的深入理解 与 应用
  18. import()函数和import语句
  19. 推荐书目《wireshark网络分析就是这么简单》
  20. 什么是human synapsin promoter?

热门文章

  1. Unity中根据矩阵判断一个点在自身的哪一侧
  2. 如何设置省略号对其序号 html,CSS实现单行、多行文本溢出显示省略号(…)
  3. 图解时间自适应卷积----Time-aware Large Kernel Convolutions
  4. 【温和从容,岁月静好】
  5. 5000词学英语——DAY10
  6. 【计算几何】求三角面和直线交点
  7. 融资租赁助力光伏产业 风险防控成关键
  8. 安卓应用移植鸿蒙(二):移植安卓的字符串等资源文件到鸿蒙应用
  9. 基于OneNet平台设计的多节点温度采集系统-有人云4G模块+STM32
  10. ESP8266 AP模式