日韩性视频-久久久蜜桃-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对网页信息进行爬取并对标题分词的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲精品视频在线免费 | 日本国产一级片 | 欧美 亚洲 另类 偷偷 自拍 | 成人片黄网站色大片免费毛片 | 777久久| 国产亚洲精品熟女国产成人 | 国产卡一卡二 | 91精品在线观看入口 | 日韩激情av | 黄色成人在线 | 中文字幕日本一区二区 | 蜜臀aⅴ国产精品久久久国产老师 | 国产伦精品一区三区精东 | 香蕉久久夜色精品国产使用方法 | 美女调教视频 | 九一国产精品 | 午夜视频在线播放 | 国产色片 | 国产黄色免费视频 | 久久av在线| 国产免费av在线 | 免费看一级黄色大全 | 欧美精品一区二区三区三州 | 国产精品一二三区视频 | 成人国产精品久久久 | 邻居少妇张开腿让我爽了在线观看 | 亚洲色图28p| 中文字幕永久视频 | 露出调教羞耻91九色 | 在线免费观看h片 | 午夜手机福利 | 亚洲一区有码 | 人与禽一级全黄 | 手机看片日韩久久 | 欧美极品jizzhd欧美 | 日韩网 | 99re这里只有精品在线观看 | 日日撸夜夜操 | 99re久久精品国产 | 美女被草视频在线观看 | 久久sese| 欧美黄色网 | 两根大肉大捧一进一出好爽视频 | 少妇一级淫片免费 | 黄色一级免费观看 | 黄色一级淫片 | 亚洲在线免费观看视频 | 玩弄白嫩少妇xxxxx性 | 看全黄大色黄大片美女人 | 狠狠做深爱婷婷综合一区 | 亚洲大片免费看 | 狼人综合视频 | 99热热99 | 制服.丝袜.亚洲.中文.综合 | 中文字幕电影一区 | 精品国产午夜福利在线观看 | 久热国产精品 | 夜夜草 | 四虎影院污 | 亚洲免费视频一区二区 | 亚欧激情 | 黄色小视频免费 | 熟妇高潮一区二区高潮 | 亚洲一级在线观看 | 黄色av电影在线 | 日韩一片 | 自拍偷拍色综合 | 中文字幕一二三四区 | 91精品国产一区 | 特一级黄色片 | 亚洲国产精品无码久久 | 色婷婷社区 | 国产又粗又大又长 | 丰满少妇被猛烈进入一区二区 | 红桃视频成人 | 青草视频在线观看视频 | 天天草天天操 | 日韩精品一区二区在线看 | 黄色日韩视频 | 亚洲精品福利在线观看 | 日韩欧美久久 | 久久久免费高清视频 | 黄色网在线看 | 久久久久久久久一区 | 国产精品国产自产拍高清av | 无人在线观看的免费高清视频 | 国产一区二区三区中文字幕 | 公交顶臀绿裙妇女配视频 | 人妻一区二区三区视频 | 最新色站 | 玉女心经在线看 | 精品人妻码一区二区三区红楼视频 | 国产日产欧美一区二区 | 裸体裸乳被免费看视频 | 黄色免费网站在线看 | 娇妻第一次尝试交换的后果 | 手机在线看片日韩 | 黄色av影院 | 国产污污网站 |