1. 程式人生 > 實用技巧 >Python爬蟲技術-根據【理財】關鍵字爬取“巨潮資訊網”的title

Python爬蟲技術-根據【理財】關鍵字爬取“巨潮資訊網”的title

知識要點還是之前的方法:

1. .*? 匹配全部內容的正則

2. selenium中元素定位方法 find_element_by_xpath 絕對路徑的獲取方法

3. 字串內容拼接方法 .join()

實現步驟:

1.開啟Chrome瀏覽器,並訪問被測地址

2.自動翻頁獲取網頁原始碼

3.迴圈遍歷每頁包含關鍵字【理財】的標題title

4.正則表示式區標題內容,並對資料進行清洗

案例背景頁面:

詳細程式碼實現如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : Newsjuchao.py
# @Author: Wang jianhua

# @Date : 2020/10/19
# @Desc : 批量下載巨潮資訊網-包含關鍵字【理財】的新聞標題
#@Contact : [email protected]
#@Software : PyCharm

from selenium import webdriver
import re
import time
browser = webdriver.Chrome()
browser.maximize_window() #瀏覽器最大化
url = 'http://www.cninfo.com.cn/new/fulltextSearch?notautosubmit=&keyWord=理財' #被測地址

browser.get(url)
time.sleep(3)
data = browser.page_source
p_count = '<span class="total-box" style="">約(.*?)條'
count = re.findall(p_count, data)[0] # 獲取公告個數 findall()方法返回的是列表哈
pages = int(int(count)/10)

# 1.自動翻頁獲取原始碼
datas = []
datas.append(data) # 把第一頁原始碼先放到datas這個列表裡
for i in range(10): # range(10)-表示獲取1-11頁的內容(注意下標的取值是前閉後開),想爬全部的話改成range(pages)100頁

browser.find_element_by_xpath('//*[@id="fulltext-search"]/div/div[1]/div[2]/div[4]/div[2]/div/button[2]').click()
time.sleep(2)
data = browser.page_source
datas.append(data)
time.sleep(1)
alldata = "".join(datas)
browser.quit()

# 2.編寫正則表示式
p_title = '<span title="" class="r-title">(.*?)</span>'
p_href = '<a target="_blank" href="(.*?)data-id='
p_date = '<span class="time">(.*?)</span>'
title = re.findall(p_title, alldata)
href = re.findall(p_href, alldata)
date = re.findall(p_date, alldata, re.S)

# 3.清洗資料
for i in range(len(title)):
title[i] = re.sub('<.*?>', '', title[i])
href[i] = 'http://www.cninfo.com.cn' + href[i]
href[i] = re.sub('amp;', '', href[i])
date[i] = date[i].strip()
date[i] = date[i].split(' ')[0]
print(str(i + 1) + '.' + title[i] + ' - ' + date[i])
print(href[i])
案例執行效果(100頁的資料時):

資料清洗部分的寫法和之前爬取百度和搜狗新聞網的寫法是大致是相同的,可擴充套件成將資料儲存到資料庫中,然後將部分資訊通過郵件的方式推薦給你的老闆!然後大家對你刮目相看,可以參考我之前分享的案例!

謝謝,今天就到這裡!您多指教!