日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python对网页信息进行爬取并对标题分词

發布時間:2023/12/31 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python对网页信息进行爬取并对标题分词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要對新浪新聞進行python爬蟲爬取。

一.主要使用的python庫

  • requests
  • bs4
  • json
  • jieba

二.爬取網頁的信息

爬取的新浪網頁:關于開學,鐘南山說這兩點非常重要!

點擊右鍵檢查,根據網頁的結構可以獲取我們想要的信息。接下來爬取新聞的標題、時間、來源、內容、責任編輯。

import requests from bs4 import BeautifulSoup from datetime import datetime#獲取網頁源代碼 res = requests.get('https://news.sina.com.cn/c/2020-04-12/doc-iirczymi5906268.shtml') #設置編碼格式 res.encoding = 'utf-8' #創建BeautifulSoup對象 soup = BeautifulSoup(res.text,'html.parser') #獲取標題 title = soup.select('.main-title')[0].text #獲取時間 timesource = soup.select('.date')[0].text time = datetime.strptime(timesource,'%Y年%m月%d日 %H:%M') #獲取來源 source = soup.select('.source')[0].text #獲取內容 article = ' '.join([i.text.strip() for i in soup.select('.article p')[:-1]]) #獲取責任編輯 author = soup.select('.show_author')[0].text.lstrip('責任編輯:')

接下來獲取評論數,由于新浪新聞中的評論數不再html文件中而在js文件中。我們需要獲取評論的js文件。

復制評論的URL:https://comment.sina.com.cn/page/info?version=1&format=json&channel=gn&newsid=comos-irczymi5906268&group=0&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=3&t_size=3&h_size=3&thread=1&uid=unlogin_user&callback=jsonp_1586701508631&_=1586701508631

下載評論數據,去掉元素URL末尾的&callback=jsonp_1586701508631&_=1586701508631
會得到一個json格式的數據

comments = requests.get('https://comment.sina.com.cn/page/info?version=1&format=json&channel=gn&newsid=comos-irczymi5906268&group=0&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=3&t_size=3&h_size=3&thread=1&uid=unlogin_user') comments.encoding = 'utf-8' comments.text


接著解析json數據,評論數是動態變化的。

輸出評論數:

num = json.loads(comments.text)['result']['count']['total'] num


獲取新聞標識符

使用正則表達式獲取新聞標識符:

import re newsurl = 'https://news.sina.com.cn/c/2020-04-12/doc-iirczymi5906268.shtml' newsid = re.search('doc-i(.+).shtml',newsurl) newsid.group(1)

三.獲取新浪國內最新新聞一個分頁的20條新聞鏈接

新浪國內新聞https://news.sina.com.cn/china/
最下面為分頁的切換。

分頁是動態加載的,通過network找到分頁相關的URL,不同的分頁鏈接有2處不同,如下:

接著我們獲取新浪新聞首頁新聞信息,采用的是api的方式獲取。
新浪首頁的api為:
https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8

import requests import json #獲取新浪新聞首頁新聞信息 res = requests.get('https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=1code=utf-8') res = json.loads(res.text) res



獲取新浪新聞第一個分頁的20條鏈接

for i in res['result']['data']:print(i['url'])


通過切換分頁,我們可以獲得不同分頁下的新聞信息。

四.jieba分詞簡介

jieba是python中用于分詞的第三方庫。
jieba中文分詞的主要原理:

利用一個中文詞庫,確定中文字符之間的關聯概率,中文字符間概率大的組成詞組,形成分詞結果

jieba庫分詞的三種模式:

精確模式把文本精確的切分開,不存在冗余單詞
全模式把文本中所有可能的詞語都掃描出來,有冗余
搜索引擎模式在精確模式的基礎上,對長詞再次切分

jieba庫常用函數:

jieba.lcut(s)精確模式,返回一個列表類型的分詞結果
jieba.lcut(s,cut_all=True)全模式,返回一個列表類型的分詞結果,存在冗余
jieba.lcut_for_search(s)搜索引擎模式,返回一個列表類型的分詞結果,存在冗余
jieba.add_word(w)向分詞詞典增加新詞w

五.完整代碼

import requests from bs4 import BeautifulSoup import json import re from datetime import datetime import pandas as pd import sqlite3 import os import jieba#新浪首頁api url = 'https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page={}&encode=utf-8' #評論鏈接 commentUrl = 'https://comment.sina.com.cn/page/info?version=1&format=json\ &channel=gn&newsid=comos-{}&group=undefined&compress=0&ie=utf-8&oe=utf-8\ &page=1&page_size=3&t_size=3&h_size=3&thread=1&uid=3537461634'# 爬取網頁內詳細信息 def getNewsDetail(newsurl):result = {}#print('newsurl:',newsurl)res = requests.get(newsurl)res.encoding = 'utf=8'soup = BeautifulSoup(res.text, 'html.parser')result['title'] = soup.select('.main-title')[0].texttimesource = soup.select('.date-source')[0].select('.date')[0].text# dt = datetime.strptime(timesource,'%Y年%m月%d日 %H:%M')result['time'] = timesourceresult['url'] = newsurlresult['origin'] = soup.select('.date-source')[0].textresult['article'] = ' '.join([p.text.strip() for p in soup.select('#article p')[:-1]])result['author'] = soup.select('.show_author')[0].text.lstrip('責任編輯:')result['comments'] = getCommentCounts(newsurl)return result# 爬取評論數量,兩條不同鏈接的評論, #不同的地方是newsid=comos-xxxx部分不一樣,xxx為新聞標識符(newsid),可以用{}來代替,之后用format()函數填充 def getCommentCounts(newsurl):m = re.search('doc-i(.+).shtml', newsurl)newsId = m.group(1)commentURL = commentUrl.format(newsId)comments = requests.get(commentURL)jd = json.loads(comments.text)return jd['result']['count']['total']# 獲取每個分頁的所有新聞的URL,然后取得詳細信息 def parseListLinks(url):newsdetails = []res = requests.get(url)jd = json.loads(res.text)for ent in jd['result']['data']:newsdetails.append(getNewsDetail(ent['url']))return newsdetails news_total = [] # 取得指定分頁的新聞信息 for i in range(1, 2): # 取第一頁的新聞信息newsurl = url.format(i)newsary = parseListLinks(newsurl)#返回的是每個分頁的新聞的信息的列表,列表元素是包含每個新聞具體信息的字典news_total.extend(newsary)#用pandas整理爬取出的資料 df = pd.DataFrame(news_total) # 指定生成的列順序 cols = ['title', 'author', 'time', 'origin', 'article', 'comments', 'url'] df = df.loc[:, cols]# 存儲到sqlite數據庫中 with sqlite3.connect('news.sqlite') as db:df.to_sql('newsInfo', con=db) # 讀取數據庫中的信息 with sqlite3.connect('news.sqlite') as db1:df2 = pd.read_sql_query('SELECT * FROM newsInfo', con=db1) # 保存新聞信息到excel表格中 df2.to_excel('newsDetails2.xlsx')excelFile = r'newsDetails2.xlsx' #讀取excel的數據 data = pd.read_excel(excelFile,sheet_name=0) #獲取標題項并進行分詞 for i in range(20):res=jieba.cut(data['title'][i])print("/".join(res))

分詞結果:

六.用詞云對新聞標題可視化

代碼:

from wordcloud import WordCloud import jieba import numpy import PIL.Image as Image import pandas as pdexcelFile = r'C:\Users\Petrichor\Desktop\信息內容安全\爬蟲\demo1\newsDetails2.xlsx' data = pd.read_excel(excelFile,sheet_name=0) with open('word.txt','a') as file:for i in range(20):file.write(data['title'][i])file.write('\n')def chinese_jieba(text):wordlist_jieba=jieba.cut(text)space_wordlist=" ".join(wordlist_jieba)print(space_wordlist)return space_wordlistwith open("word.txt")as file:text=file.read()text=chinese_jieba(text)#2.圖片遮罩層mask_pic=numpy.array(Image.open("img1.png"))#3.將參數mask設值為:mask_picwordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",mask=mask_pic,background_color='white').generate(text)image=wordcloud.to_image()image.show()

最終結果:

參考博客:
python3編程05–爬蟲實戰:爬取新聞網站信息1
python3編程06–爬蟲實戰:爬取新聞網站信息2
python3編程07-爬蟲實戰:爬取新聞網站信息3

總結

以上是生活随笔為你收集整理的Python对网页信息进行爬取并对标题分词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇不卡视频 | 天堂av在线资源 | 精品国产1区2区 | 国产69熟| 不卡的在线视频 | 成人乱人乱一区二区三区 | jizz18欧美18 | 狠狠操天天干 | 天堂网在线最新版www中文网 | 99精品一区二区三区无码吞精 | 尤物精品视频 | 欧美 日韩 综合 | 国产精品theporn | 在线观看sm | 久久精品三级视频 | 看特级黄色片 | 制服丝袜在线第一页 | 精品成人国产 | 白俄罗斯毛片 | 人操人操 | 女人脱下裤子让男人桶 | 日韩欧美三级在线 | 日韩1024| 日韩性爰视频 | 天堂av在线免费观看 | 成人一级网站 | 日本h片在线观看 | 26uuu成人网 国产精品久久久久久久久久直播 | 自拍视频啪 | 99国产在线| 88国产精品 | 韩国毛片网站 | 羞羞动漫免费观看 | 大胸美女啪啪 | 粉嫩av在线 | 久久久精品人妻av一区二区三区 | 欧美xxxx精品 | 中文字幕无人区二 | 免费福利视频在线观看 | 亚洲免费黄色片 | 亚洲男人天堂2017 | 日韩涩| 午夜丁香婷婷 | 波多野结衣一区二区三区高清av | 国产精品久久一区 | 夜夜av| 亚洲av无码专区首页 | 国产欧美一区二区三区免费看 | 女女同性女同一区二区三区九色 | 一区二区三区国 | 狠狠操在线播放 | 亚洲成人黄色片 | 亚洲国产精品成人午夜在线观看 | 久久精品国产亚洲AV成人雅虎 | 丰满人妻av一区二区三区 | 蜜臀久久精品久久久久久酒店 | 日韩高清不卡 | 国产视频一二 | 久久久久久无码午夜精品直播 | a免费毛片| 福利视频网站 | 国产高清不卡视频 | 天天干狠狠操 | 精产国产伦理一二三区 | 日韩蜜桃视频 | jzzjzzjzz亚洲成熟少妇 | 欧美成人不卡视频 | 一道本一区二区 | xx视频在线观看 | 可以免费看污视频的网站 | 日韩毛片免费看 | 韩国jizz| 天天插天天操 | 精品人妻无码一区二区三区换脸 | 亚洲天堂成人在线观看 | 亚洲欧洲在线播放 | 婷婷激情五月综合 | 中文字幕免费在线看线人动作大片 | 国产又粗又长又硬免费视频 | www.sesehu| 久久国语对白 | 黄色在线免费视频 | 疯狂做爰的爽文多肉小说王爷 | 日日摸夜夜爽 | 人妻互换免费中文字幕 | 亚洲国产果冻传媒av在线观看 | 亚洲精品97久久 | 青草视频在线免费观看 | 亚洲第一色网 | 免费在线看黄视频 | 色婷婷www| 在线天堂资源 | tube日本69第一次 | 中文字幕天堂在线 | 久久偷拍免费视频 | 叶山小百合av一区二区 | 国产精品不卡一区二区三区 | 天天干,天天爽 | 国产一区二区精彩视频 |