Python

2020-12-25 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 裡面有許多有意思的項目值得去學習,研究

相關焦點

  • 【Python基礎】python使用python-docx操作word
    1、python-docx庫介紹該模塊兒可以創建、修改Word(.docx)文件;python-docx使用官網:python-docx官網我們在安裝此模塊兒使用的是pip install python-docx,但是在導入的時候是import docx;2、Python讀取Word文檔內容注意:每進行一個操作,必須保存一下,否則等於白做;1)word文檔結構介紹在這裡插入圖片描述2)python-docx
  • python列表,python列表添加刪除元素操作大全,學習python第7天
    在python中想一次性存儲100個數值在一起就需要使用到python列表,而python列表是什麼?python列表有哪些操作呢?下面羽憶教程為您介紹。python列表python列表在python中,有一種數據結構list,也叫做python列表、序列。
  • python入門書籍,輕鬆學python
    全民學python的熱潮已經開啟,然而,對於這種情況,還是有很多小夥伴私信我python到底該怎麼入門?沒接觸過編程能學會嗎?
  • 初識python
    2,python歷史。宏觀上:python2 與 python3 區別:python2 源碼不標準,混亂,重複代碼太多,python3 統一 標準,去除重複代碼。3,python的環境。編譯型:一次性將所有程序編譯成二進位文件。缺點:開發效率低,不能跨平臺。優點:運行速度快。
  • 學python能找到女朋友嗎(python基礎教程)
    編者按:學習python近兩年,談談我對於python的一點小理解,也從一些方面談談自己微薄的想法,本文會介紹如何學習Python。實現一個微型的HTTP服務程序來說是很簡單的事情,在Python下,只需要一個命令行,為了提高大家的編程效率,那就趕快關注本文吧!
  • python字典操作大全,學習python第7天
    python字典跟列表類型,能存儲多個數據,並且還能在訪問元素的時候可以很快定位到需要的元素。而python字典操作方法有多少種呢?下面羽憶教程為您介紹。python字典python字典概念:python字典可以用來存儲任意類型對象,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開
  • 【Python雜貨鋪】速學python基礎
    「人生苦短,我學python」是編程屆的名言。用python寫小腳本的便捷性,讓很多其他語言的學習者把python當作輔助語言。擁有了某一個語言的功底,再來學習另外一種語言應該是十分快速的。編程理念都十分相似,只是看看語言的差異性。帶著Java的基礎,學習Python,準備上路了。
  • 我的Python筆記·BioPython(一)
    簡介Biopython(https://biopython.org/)是一個計算分子生物學模塊的集合,用它可以實現許多生物信息學項目中的基本任務
  • python入門
    --Yves Hilpisch 《Python for Finance》發現近期學習python的人越來越多了,最近也有人問我有沒有啥課程或者書推薦的。我自己還是側重數據計算和在金融中的應用,系統管理、web開發等沒做過。我當年也是新手入門,自己搜索嘗試,買了很多的書,也在網上下載了很多資料。
  • python基礎學習教程:Python基礎語法
    >>> '''在學習過程中有什麼不懂得可以加我的python學習交流扣扣qun,934109170群裡有不錯的學習教程、開發工具與電子書籍。與你分享python企業當下人才需求及怎麼從零基礎學習好python,和學習什麼內容。'''Window 上在安裝 Python 時已經安裝了交互式編程客戶端,提示窗口如下:
  • 介紹一下什麼是python(瘋狂Python)
    後續我會不斷努力的更新關於學英語的一些文章,同時,我也會不斷更新新的知識(譬如:程式語言:python,資料庫:mysql,Linux系統的一些操作等等,與大家一起學習進步)。進入正題,大家都應該聽說過Python這門程式語言吧,它在程式語言中的排名不斷的再提升,之所以這麼受歡迎,是因為它簡單,易學。
  • Python零基礎入門-03-Python基礎語法
    1,python系列課程學習方法由於python屬於腳本語言,如果單純的解釋語法沒有什麼實在的意義,所以我python系列的課程都是以視頻講解為主,至於這裡的文章,是給你複習用的。2. 基礎語法python的基礎語法都將以小例子作為驅動來講解。如果你有其他程式語言的基礎,那麼直接看文章就會很快上手。
  • 小白python入門基礎——Python安裝教程
    且學會python後運用python能極大地提高工作效率等等。今天就來教大家如何安裝python,走向新世界的大門!1.首先,我們在瀏覽器上搜索python,進入python官網。2.進入官網後選擇自己對應的作業系統下載python(這裡python有不同的版本,選擇合適的下載,作者下載的是python3版本)
  • Python開發:Win10創建定時任務執行Python腳本
    註:創建基礎任務時,選擇的執行程序是pythonw.exe,而不是python.exe,主要原因是pythonw.exe執行python程序是不會出現黑色控制臺窗口,python.exe執行python文件時會出現控制臺窗口,從用戶體驗觸發,選擇pythonw.exe執行。
  • python運算符總結
    python算術運算符加減乘除是最基本的數學規則,python中當然不能忽視。我們通過交互式解釋器來演示。在cmd命令行下,輸入python回車,即可打開交互式窗口。這類運算的結果為是或否,python中,用兩個特殊的變量,True和False來表示是或否。如下:
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • python入門必備乾貨 | python,pycharm,anaconda區別與聯繫
    瓦特,一會python一會Anaconda一會又特麼來了個pycharm,一串接一串英文,特麼怎麼讀都還不知道!!!能吃嗎???一.python是什麼python是一門程式語言,當前比較流程的程式語言有C/C++  、JAVA 、Object-C  、PHP等,當然python也是其中之一。
  • 初學Python
    Python 定位於C和shell之間,是一門功能全面,易學易用,可拓展的語言pycharm 是一個比較流行的python集成開發環境
  • 用Python寫個在線Python的網站怎麼樣
    前幾天,一個朋友提出了一個建議,如何用python寫出python的解釋器,我感覺這是一個很好的問題,於是就去看看,打算用python寫一個試試
  • python數據分析專題 (7):python數據分析模塊
    python是一門優秀的程式語言,而是python成為數據分析軟體的是因為python強大的擴展模塊。
  • python教程之python數學運算
    中進行分數(fraction)運算分數運算是python中的一個模塊(module)。模塊是由別人寫的,並且可以被拿來直接使用的代碼程序,包括類、函數以及標籤的定義,是python標準函數庫的一部分。使用是必須先插入模塊。