Python - python爬取新聞專題及常見問題 - CSDN

2021-01-07 CSDN技術社區

最近,在數據挖掘課,要交課設了,打算做一個通過機器學習進行新聞分類,首先要有大量的文本(新聞),去做訓練,並通過爬蟲爬取大量的新聞

一,思路如下:

0.首先確定獲取數據的網站

1.通過BeautifulSoup來切取連結

2. 然後使用python的第三方框架newspaper3k,直接通過給指定的連結,然後返回新聞文本(當然也可通過BeautifulSoup切出文本)

二,過程如下:

1.選定網址   新浪新聞 https://news.sina.com.cn/roll/#pageid=153&lid=2509&k=&num=50&page=1

頁面如上

2.查看更多新聞可以使用拼接url 也可以模擬點擊,我這裡用的模擬點擊

使用python 框架 selenium 來進行模擬點擊

selenium 是一套完整的web應用程式測試系統,用它來進行模擬點擊,需要配合Google Chrome或著火狐瀏覽器使用,配合不同的驅動

定位點擊按鈕時,不同的元素

對於新浪網來說如下:

這個點擊定位是找到頁面中所有對應的id,自上向下,第一個是我們想要的

browser.find_elements_by_class_name("pagebox_pre")[1]

然後每次點擊,得到下一頁,獲取整個界面,切除url,重複

3.利用BeautifulSoup切出新聞的url

def geturl(html): #獲取所有新聞連結

sleep(2)

soup = BeautifulSoup(html , "html.parser")

bd = soup.find(attrs = {"class" : "d_list_txt"})

b1 = bd.findAll(attrs = {"class" : "c_tit"})

for u in b1:

urlList.append(u.findAll('a')[0].get("href")) #獲取所有新聞連結

4.使用python的第三方框架newspaper3k,直接通過給指定的連結,然後返回新聞文本

def captive( url ): #獲取新聞內容

news = Article( url , language='zh')

sleep(1)

news .download() #下載

news .parse() #解析

newsList.append(news.text) #新聞正文

三,具體代碼如下

#! /usr/bin/env python

#coding=utf-8

import io

import sys

from tqdm import tqdm

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

from selenium import webdriver

from time import sleep

import requests

from bs4 import BeautifulSoup

from newspaper import Article

from selenium.webdriver.common.action_chains import ActionChains

'''

8 軍事 https://news.sina.com.cn/roll/#pageid=153&lid=2514&k=&num=50&page=2

6 娛樂 https://news.sina.com.cn/roll/#pageid=153&lid=2513&k=&num=50&page=2

5 體育 https://news.sina.com.cn/roll/#pageid=153&lid=2512&k=&num=50&page=2

2 科技 https://news.sina.com.cn/roll/#pageid=153&lid=2515&k=&num=50&page=2

1 財經 https://news.sina.com.cn/roll/#pageid=153&lid=2516&k=&num=50&page=2

7 國際 https://news.sina.com.cn/roll/#pageid=153&lid=2968&k=&num=50&page=2

'''

url = "https://news.sina.com.cn/roll/#pageid=153&lid=2515&k=&num=50&page=26"

urlList = [] #url 列表

newsList = [] #newsn內容列表

def captive( url ): #獲取新聞內容

news = Article( url , language='zh')

sleep(1)

news .download() #下載

news .parse() #解析

newsList.append(news.text) #新聞正文

def gethtml( url , n ): #新聞的url 及獲取的次數1次點擊50條

browser.get(url)

for i in range(0,n):

sleep(2)

label_bel = browser.find_elements_by_class_name("pagebox_pre")[1] #定位點擊鍵

html = browser.page_source # 獲取網頁

geturl(html)

label_bel.click() # 進行點擊加載更多

sleep(2)

currentPageUrl = browser.current_url

browser.get(browser.current_url)

def geturl(html): #獲取所有新聞連結

sleep(2)

soup = BeautifulSoup(html , "html.parser")

bd = soup.find(attrs = {"class" : "d_list_txt"})

b1 = bd.findAll(attrs = {"class" : "c_tit"})

for u in b1:

urlList.append(u.findAll('a')[0].get("href")) #獲取所有新聞連結

browser = webdriver.Chrome() # 加載瀏覽器

gethtml( url , 20 )

#for url1 in urlList: #測試連結

# print(url1)

print(len(urlList))

for newsurl in tqdm(urlList):

try:

captive( newsurl )

except:

pass

continue

sleep(0.1)

for i in tqdm(range(len(newsList))): #存入文件

try:

f = open(r"datass\2_" + str(1000 + i) + ".txt",'a',encoding="utf-8")

f.write(newsList[i])

f.close()

except:

pass

continue

sleep(0.1)

print("結束")

#print(newsList[0])

#f=open('./1.html',mode="w",encoding="utf-8") #這三行為測試使用

#f.write(html)

四,項目配置

以大部分為python的模塊,都可以pip安裝,簡單介紹:

1 . 預防萬一,為了全程的一遍通過,首先更新下pip

python -m pip install --upgrade pip

2. 安裝newspaper (強大的獲取網頁新聞框架)

pip install newspaper3k

3.安裝Beautifulsoup

pip install beautifulsoup4

4.安裝selenium (selenium 是一套完整的web應用程式測試系統,用它來進行模擬點擊,需要配合瀏覽器使用)

pip install selenium

4.1 與之對應的配置

這裡用到的是Google Chrome瀏覽器

查看瀏覽器版本號

然後將驅動安裝到python的目錄

以上全部配置步驟完成

推薦一個網站:https://hellogithub.com 裡面有許多有意思的項目值得去學習,研究

相關焦點

  • datatype在python專題及常見問題 - CSDN
    title category layout tags date python教程之3基本數據類型 pythonpython的字串列表有2種取值順序:從左到右索引默認0開始的,最大範圍是字符串長度少1從右到左索引默認-1開始的,最大範圍是字符串開頭如果要實現從字符串中獲取一段子字符串的話,可以使用變量 [頭下標:尾下標],就可以截取相應的字符串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
  • python爬取數據存入資料庫
    昨天本來寫了一篇關於python爬取的文章,結果沒通過,正好今天一起吧。用python同時實現爬取,和存入資料庫,算是複習一下前面操作資料庫的知識。1、準備工作既然是爬取,那自然要連接到爬取的頁面,所以需要requests庫。
  • 爬取《The Hitchhiker's Guide to Python!》python進階書並製成pdf
    有讀者讓我來個正則的,所以我今天就來個正則+requests來進行爬取。今天原來是想爬小說的,但想到我不怎麼看小說,讀者也是都喜歡學習的,對吧?嘻嘻!所以我來爬個與python相關的內容,恰好前幾天我又看到別人推薦的一本python進階書,這本書的作者是我們的python大神kennethreitz徵集各路愛好python的人所寫的,下面是地址:中文版:http://pythonguidecn.readthedocs.io/zh/latest/英文版:http://docs.python-guide.org
  • 菜鳥學Python 安裝教程和常見問題
    一、什麼是 pythonpython 是一門解釋性語言,語法簡單,有大量的擴展包,如處理圖像,爬取網頁等等。(需安裝 python 的解釋器,有了解釋器,即可開始進行 python 編程。)千萬注意 Anaconda 的版本號,一定要選擇 Anaconda3 開頭的,下載完畢後開始安裝,建議默認選擇安裝 python3。(注意這裡我們選擇安裝 python3,因為 python2 以後官方不再更新)以下為每一步安裝的截圖,請大家仔細查看後再安裝!!
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    設{Xt}是一時間序列,對任意正整數m,任取t1、t2、t3、...、tm∈T,對任意整數τ,假如滿足圖1中式(1),則稱時間序列{Xt}是嚴平穩時間序列。而寬平穩的定義為,如果{Xt}滿足以下三個條件:(1)任取t∈T,有E(Xt·Xt)(2)任取t∈T,有E Xt =μ,μ為常數;(3)任取t,s,k∈T,且k+s-t∈T,有γ(t, s)=γ(k, k+s-t)則稱{Xt}為寬平穩時間序列。
  • Pyspider框架 —— Python爬蟲實戰之爬取 V2EX 網站帖子
    /tzs_1041218129/article/details/52853465)我所遇到的一些錯誤:首先,本爬蟲目標:使用 Pyspider 框架爬取 V2EX 網站的帖子中的問題和內容,然後將爬取的數據保存在本地。
  • stata調用python爬取時間數據——借他山之石以攻玉
    該功能使得,我們可以先利用python爬取數據,然後再利用用戶所熟悉的stata去處理數據,因為stata在處理數據方面具有一定的優勢。那麼今天我們就來看看,怎樣利用stata調用python爬取數據,再用stata進行處理?今天試爬的數據是巨潮網上的預約年報的披露時間數據。
  • Python爬取B站彈幕並製作詞雲圖
    在開發者工具當中,選擇你所需要爬取的url地址,查看headers其中的requests headers 中的cookie就是了。 遇到亂碼問題都可以這樣使用,如果使用之後還是出現亂碼問題,就要根據網頁的編碼進行轉碼了。
  • 用人話教你入門Python[簡單爬取網頁內容]
    但是我發現網頁太多,收集起來好累……於是我做了一隻叫「網絡爬蟲」的蜘蛛,把它丟在網際網路上,告訴它,見到新的網站你就吃進肚子裡,重複的網站就不要吃了,吃完一個網站就再吃跟這個網站有連結的新網站……直到你把網際網路所有不重複的網站吃掉就跑回來吐給我哦我們這裡不需要像Goodle公司那樣爬取很多網頁,先學爬一個網頁裡的部分內容就好了
  • 用Python進行Web爬取數據
    希望獲得更多數據來訓練我們的機器學習模型是一個一直困擾人們的問題。我們無法在數據科學項目中獲得可以直接使用的Excel或.csv文件,對嗎?那麼,如何應對數據匱乏的問題呢?實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。
  • python 卡方檢驗專題及常見問題 - CSDN
    1、先用python展示如何進行卡方檢驗,用上面所舉的例子。# python3.6 import numpy as npfrom scipy.stats import chi2_contingencycontingency_table = np.array([[631,364,582], [154,55,45]])Chi2, P, degree_of_freedom, contingency_table0
  • Excel與Python爬取數據,兩者PK,誰優誰劣?
    小夥伴們大家好~Excel和python作為當前兩款比較火的數據分析處理工具,兩者之間有很多共性也有很大的區別。今天一起來看下在抓取網頁數據這塊,兩者有什麼異同點。如果用python爬取上面的網頁,只需要三行代碼,如下圖所示:這裡沒有用BS4,xpath等網頁解析方法,pandas提供了read_html的功能,可以直接獲取網頁數據。與Excel相比,python的優勢在於效率與便捷性。
  • Python爬蟲從入門到精通(3): BeautifulSoup用法總結及多線程爬蟲爬取糗事百科
    我們還會利用requests庫和BeauitfulSoup來爬取糗事百科上的段子, 並對比下單線程爬蟲和多線程爬蟲的爬取效率。什麼是BeautifulSoup及如何安裝BeautifulSoup是一個解析HTML或XML文件的第三方庫。
  • python+Chrome爬取動態異步生成的頁面內容
    百度一下「python漢字轉拼音+聲調」,找到一篇「Python: 漢字轉拼音(帶聲調)」的文章。哈哈,按照功能實現需求了。咳咳,有些跑題。為了貼近標題,提供解決之道二。準備用python爬。直接用urllib.request爬取,發現得到的剛好沒有這些資源,怎麼回事?
  • 用python分析上海二手房數據,用幾十行代碼爬取大規模數據!
    add': add.get_text(), 'area': area.get_text(), 'price': price.get_text(), 'danjia': danjia.get_text(), 'author': author.get_text(), 'tag': list(tag.stripped_strings) } print(data)3、調用spider_1函數爬取指定網頁
  • 如何用 Python 爬取網頁製作電子書
    本文來自作者在 GitChat 上分享「如何用 Python 爬取網頁製作電子書」主題內容。有人爬取數據分析黃金周旅遊景點,有人爬取數據分析相親,有人大數據分析雙十一,連小學生寫論文都用上了大數據。我們每個人每天都在往網上通過微信、微博、淘寶等上傳我們的個人信息,現在就連我們的錢都是放在網上,以後到強人工智慧,我們連決策都要依靠網絡。
  • 致Python 初學者們! - CSDN
    本文以及後續的文章(https://blog.csdn.net/xufive/category_9506563.html)正是為了幫助像我當年一樣困惑的 Python 初學者走出困境、快速成長。希望我的經驗能真正幫到你們。明確學習目標,不急於求成,不好高騖遠當下是一個喧囂、浮躁的時代。
  • python爬取+BI分析5000條內衣數據,發現妹子最愛這款文胸
    生活中我們經常會用python進行數據爬取,但是爬取簡單分析難,很多人喜歡用echarts圖表接口或者是python的第三方庫進行數據可視化,甚至是用matlab,基本上都需要用代碼實現,在數據展示上十分繁瑣,效率不高。
  • python爬蟲16 | 你,快去試試用多進程的方式重新去爬取豆瓣上的電影
    GIL 鎖會讓多線程顯得有點雞肋特別是在 CPU 密集型的代碼下多線程被 GIL 鎖搞得效率不高特別是對於多核的 CPU 來說如果想要充分利用 CPU 還是用多進程吧這樣我們就可以做到並行爬取提高了爬取的效率那麼,怎麼玩多進程呢恩接下來就是
  • 怎麼通過Python掙外快,通過Python掙外快的幾種方式
    python是當前非常火熱的程式語言,如何通過python賺外快呢?python是當前非常火熱的程式語言,如何通過python賺外快呢?2.網絡接單:作為一個膠水型的程式語言,用處有很多,只要你掌握python,不怕接不到活兒,用到的地方非常的多。你可以通過個人關係,也可以通過網絡進行接單,非常的方便。可以去商城比如淘寶上搜python程序,到對應的店鋪找客戶小姐姐,就說你想做python程序,讓他給你聯繫方式,然後他會讓你加群。