Python爬虫——主题爬取搜狐新闻(步骤及代码实现)
目录
- 一 、实现思路
- 二、获取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爬虫——主题爬取搜狐新闻(步骤及代码实现)相关推荐
- python爬虫实现爬取网页主页信息(html代码)
python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...
- Python学习笔记(11) 如何用爬虫完整抓取搜狐新闻文章?
一.操作步骤 今天教大家抓取搜狐的新闻文章,重点讲解怎么抓取到完整的正文内容,怎么批量抓取到更多新闻,方法是通用的,大家可以应用到其他新闻网站的抓取,总体操作步骤如下: 二.案例+操作步骤 采集规则: ...
- selenium无头浏览爬取搜狐新闻
个人笔记 import requests import re from lxml import etree from selenium import webdriver from selenium.w ...
- python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址
随着人们生活水平的提高,肯德基这类的快餐消费的十分火爆,成为小朋友和年轻人的最爱,我们到一个地方想要找到肯德基店面,会根据导航获取肯德基地址,那你知道我们也可以使用python爬虫获取KFC地址吗?我 ...
- python爬虫搜狐新闻_应用案例2:爬取搜狐体育的新闻信息
爬虫学习使用指南 Auth: 王海飞 Data:2018-06-25 Email:779598160@qq.com github:https://github.com/coco369/knowledg ...
- #python爬虫#爬取搜狐股票
爬取搜狐股票 完整程序 完整程序 利用搜狐新闻的股票列表,构造url爬取信息 import requests from bs4 import BeautifulSoup import json imp ...
- python爬取搜狐新闻网站所有新闻的标题和正文并按阅读量排行输出
# _*_ coding: utf-8 _*_ """实现定量爬取搜狐网站新闻 Author: HIKARI Version: V 0.2 ""&qu ...
- python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章
下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...
- python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析
标签:pattern div mat txt 保存 关于 json result with open 关于正则表达式的更多用法,可参考链接:https://blog.c ...
最新文章
- CLion使用WSL的cmake报错解决: configure_file Problem configuring file Call Stack (most recent call first):
- 圆周率派在电脑上怎样输入_Mac电脑上FCPX软件怎样导入3D LUT调色预设
- 2009年的强悍流行语~
- SBO中流程控制功能的实现-SBO_SP_TransactionNotification
- 命令 / Linux / 常用的解压缩的命令
- RHQ指标的WildFly子系统
- vim配置之taglist插件安装
- python使用 GPUs
- 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序
- JQuery官方学习资料(译):类型
- Kindle刷安卓双系统的方法
- 敏捷开发模式下的BA岗
- 用html创建数独,数独做不出来怎么办
- 易中天品汉代风云人物02: 冤死的晁错(下)
- AttributeError: module cv2.face has no attribute 'createEigenFaceRecognizer'
- elasticsearch-数据聚合
- 谈谈Line-height的深入理解 与 应用
- import()函数和import语句
- 推荐书目《wireshark网络分析就是这么简单》
- 什么是human synapsin promoter?