爬取搜狐體育新聞並儲存到本地資料庫中

2021-08-21 00:12:38 字數 1838 閱讀 3556

import re

import pymysql

import urllib.request

# 對html頁面進行解碼

defdecode_html

(html,charsets=('utf-8','gbk','gb2312'):

page_html = ''

for charset in charsets:

try:

# 嘗試對html頁面進行解碼,如果解碼成功直接返回

page_html = html.decode(charset)

break

# 如果解碼錯誤,靜默處理

except exception as e:

pass

return page_html

# 得到html頁面

def get_html(url):

# 模擬瀏覽器傳送請求,設定請求頭

headers =

res = urllib.request.request(url,headers=headers)

req = urllib.request.urlopen(res)

# 返回的html原始碼進行解碼

return decode_html(req.read())

# 定義函式,正規表示式匹配,由於頁面有很多換行符,所有預設flags為re.s,將換行符預設為字元來處理

def pattern_regex(html,pattern,flags=re.s)

html_regex = re.compile(pattern,html)

return html_regex.findall(html)

# 定義函式,寫入本地mysql資料庫

def get_mysql(sql,params_list):

conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='password',db='sohu_search',charset='utf8')

with conn.cursou() as cursou:

cursor.executemany(sql,params_list)

conn.commit()

def main(url):

page_html = get_html(url)

# 通過正規表示式,獲取nba首頁上所有新聞資訊的鏈結

# 通過頁面分析寫出正規表示式,頁面邏輯很簡單就不贅述了

url_list = pattern_regex(page_html,'"(.*?)

' target='_blank'>"')

#通過迴圈對每個頁面進行處理,空列表為稍後儲存資料準備

t_p_list =

for url in url_list:

url_html = get_html(url)

title = pattern_regex(url_html,'(.*?)')

content = pattern_regex(url_html,'(.*?)')

# 新增到列表,由於上面正則函式的返回值為列表,所以取下表

sql = 'insert into nba_search values (%s, %s)'

get_mysql(sql,t_p_list)

if __name__ == 'main':

url = ''

main(url)

通過以上**就可以將資料寫入到本地的資料庫了,當然如果使用xpath或者beautifulsoup或許程式會簡單的多,下次就讓我們來使用這兩種方法來實現爬蟲吧.

Scrapy爬取並儲存到TXT檔案

在建立完成專案並建立爬蟲的基礎上,編寫儲存到txt的專案 1.將 robotstxt obey 設定為false 2.將 item pipelines 開啟 item是scrapy提供的類似於字典型別的資料容器,它與字典最大的區別在於它規定了統一的資料規格樣式,即具有統一性與結構性。這樣既方便資料的...

scrapy爬取資料並儲存到文字

1.scrapy專案結構如下 2.開啟spidler目錄下的duba.py檔案,如下 這個是根據豆瓣一部分頁面獲取的熱門話題內容,有6條資料 coding utf 8 import scrapy from scrapydemo.items import scrapydemoitem from lxm...

python 爬取HTML內容並儲存到txt檔案內

updatetime 2020 12 08 16 53 author wz file get webdetails software pycharm used 爬取任意頁面中任意資料 import re import urllib.request from utils.log import logg...