免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python數(shù)據(jù)分析第四練:如何避免爬取到重復(fù)的數(shù)據(jù)?
'''## =========================================## Title: 4.1 爬取的信息入庫前去重## Author: 職教之光## Date: 2022-05-01## =========================================='''#!/usr/bin/python# -*- coding: UTF-8 -*-import osos.chdir('D:/3.DA/Finance Bigdata mining and analysis with Python') # 變更工作目錄print('項目工作目錄為:\n%s'% os.getcwd()) # 獲取當前工作目錄print(66 * '-') # 分割線import requestsimport reimport pymysqlimport time# UA代表訪問網(wǎng)站的瀏覽器是哪種瀏覽器,可以通過在地址欄中輸入“about:version”獲取# “\”是行連接符,headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ AppleWebkit/537.36 (KHTML, like Gecko) \ Chrome/100.0.4896.127 Safari/537.36'} def baiduinfo(company, page): num = (page - 1) * 10 # 參數(shù)規(guī)律是(頁數(shù)-1)*10 url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=' + company + '&pn=' + str(num) web = requests.get(url, headers=headers, timeout=10).text # 設(shè)置超時為10s,避免程序掛死 # print(url) page_href = '<h3 class='news-title.*?<a href='(.*?)'' href = re.findall(page_href, web, re.S) # re.S作用是在使用findall()查找時,可以自動考慮到換行的影響,使得.*?可以匹配換行 page_title = '<h3 class='news-title.*?aria-label='(.*?)'' title = re.findall(page_title, web, re.S) page_date = '<span class='c-color.*?aria-label='發(fā)布于:(.*?)'' date = re.findall(page_date, web, re.S) page_source = '<span class='c-color-gray' aria-label='新聞來源:(.*?)'' source = re.findall(page_source, web, re.S) for i in range(len(title)): # range(len(title)),這里因為知道len(title) = 10,所以也可以寫成for i in range(10) title[i] = title[i].strip() # strip()函數(shù)用來取消字符串兩端的換行或者空格,不過這里好像不太需要了 title[i] = re.sub('<.*?>', '', title[i]) # 核心,用re.sub()函數(shù)來替換不重要的內(nèi)容 print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')') print(href[i]) # 將數(shù)據(jù)存入數(shù)據(jù)庫 for i in range(len(title)): db = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='python_data', charset='gb2312') cur = db.cursor() # 獲取會話指針,用來調(diào)用SQL語句 sql_1 = 'SELECT * FROM shlpractice1 WHERE company = %s' # 編寫SQL語句 cur.execute(sql_1, company) # 執(zhí)行SQL語句 data_all = cur.fetchall() # 提取全部數(shù)據(jù) title_all = [] # data_all得到的是一個大元組(和指定的某家公司相關(guān)的所有新聞信息), # 若要提取其中各個小元組(每條新聞的各項數(shù)據(jù))的第2個元素(新聞標題), # 就得利用data_all[j][1]的方式完成(data_all[j]提取小元組,data_all[j][1]提取小元組的第2個元素)。 for j in range(len(data_all)): title_all.append(data_all[j][1]) if title[i] not in title_all: sql_2 = 'INSERT INTO shlpractice1(company, title, href, source, date) VALUES (%s, %s, %s, %s, %s)' cur.execute(sql_2, (company, title[i], href[i], source[i], date[i])) db.commit() # 當改變表結(jié)構(gòu)后,更新數(shù)據(jù)表的操作 cur.close() db.close() companys = ['北京科銳', '新世界']# 為了防止程序因為偶然的異常而終止運行,使用try/except異常處理語句for company in companys: for i in range(4): try: baiduinfo(company, i+1) # i是從0開始的序號,所以要寫成i+1表示第幾頁 print(company + '第' + str(i+1) + '頁爬取成功!') except: print(company + '百度新聞爬取失?。?)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python爬蟲案例|抓取當當網(wǎng)圖書信息
用Python爬取天貓的追評并分析篩選后保存到Excel
python 正則表達式re findall
手把手教你用Python腳本調(diào)用 DeepL API Pro 進電子書的行進行中英文自動翻譯
python爬蟲
[譯] Python 和 Pandas 在 SQLite 數(shù)據(jù)庫中的運用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服