python獲取網頁數據對電腦性能_【Python】網頁數據爬取實戰

由于網頁結構跟之前有變化,還不是很熟悉。代碼待完善,問題記錄:

騰訊新聞二級網頁內容爬取有問題。

鏈家網站頭文件沒有用到。

爬取一條騰訊視頻的header內容,存入txt。要求:

包含網頁鏈接

包含title

包含所有headers信息

import requests

from bs4 import BeautifulSoup

u = 'http://news.qq.com/a/20170205/023923.htm'

r = requests.get(url = u)

headers = r.headers #獲取網頁頭部信息

#print(headers)

soup = BeautifulSoup(r.text,'lxml')

title = soup.title.text #獲取網頁title內容

#print(title)

f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\header.txt','w',encoding='utf8')

f.seek(0)

# 創建一個txt文件

f.write('爬取網頁:'+str(u)+'\n')

f.write('新聞標題為:'+title+'\n')

for i in headers:

lst = [i,':',headers[i],'\n']

f.writelines(lst)

f.close()

print('finished!')

爬取騰訊新聞網站上,某一天的某類新聞標題。要求:

開頭:‘XX年XX月XX日騰訊新聞’

包括新聞標題和網址

(爬取每一條新聞的內容(二級標題))

import requests

from bs4 import BeautifulSoup

import re

u = 'http://news.qq.com/world_index.shtml'

r = requests.get(url = u)

soup = BeautifulSoup(r.text,'lxml')

f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news.txt','w',encoding='utf8')

f.seek(0)

# 創建一個txt文件

f.write('2018年8月26日騰訊新聞\n')

news = soup.find_all('a',href=re.compile('http://news.qq.com/a/20180825/'))

#print(news)

for i in news:

#print(i)

txt = i.text.strip()#strip() 用于去掉前后空格

if txt =='':

continue

else:

lst = [txt,',','url=',i.attrs['href']]

f.writelines(lst)

f.close()

print('finished!')

修改

import requests

from bs4 import BeautifulSoup

import re

u = 'http://news.qq.com/world_index.shtml'

r = requests.get(url = u)

soup = BeautifulSoup(r.text,'lxml')

f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news.txt','w',encoding='utf8')

f.seek(0)

# 創建一個txt文件

f.write('2018年8月26日騰訊新聞\n')

news = soup.find_all('a',href=re.compile('//new.qq.com/omn/20180826'))

#print(news)

for i in news:

#print(i)

txt = i.text.strip()#strip() 用于去掉前后空格

if txt =='':

continue

else:

lst = [txt,',','url=','http:',i.attrs['href'],'\n']

f.writelines(lst)

f.close()

print('finished!')

添加正文內容:

import requests

from bs4 import BeautifulSoup

import re

u = 'http://news.qq.com/world_index.shtml'

r = requests.get(url = u)

soup = BeautifulSoup(r.text,'lxml')

f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news2.txt','w',encoding='utf8')

f.seek(0)

# 創建一個txt文件

f.write('2018年8月26日騰訊新聞\n')

news = soup.find_all('a',href=re.compile('http://news.qq.com/a/2018'))

#print(news)

for i in news:

#print(i)

txt = i.text.strip()#strip() 用于去掉前后空格

if txt =='':

continue

else:

ul = i.attrs['href']

ur = requests.get(url = ul)

usoup = BeautifulSoup(ur.text,'lxml')

f.write(txt+'\n')

#打印正文

f.write('正文如下:\n')

if usoup.body.attrs[id]=='P-QQ':#排除圖片新聞

continue

else:

p = usoup.find('div',id="Cnt-Main-Article-QQ").find_all('p')

for i in p:

print(i.text)

f.write(i.text+'\n')

f.write('\n')

f.close()

print('finished!')

爬蟲正確的習慣和邏輯

函數式爬取

用瀏覽器去訪問,headers信息

r = request.get(url='...',headers={...})以瀏覽器的形式向網頁進行請求

頭部信息

headers = input("粘貼頭部信息:")

lst = headers.split('\n')

m=[]

for i in lst:

key = i.split(':')[0]

value = i.split(':')[1]

m.append([str(key),str(value)])

print(dict(m))

def header_format(h):

"""

函數用于轉譯網頁headers信息

h:輸入的headers信息

"""

h = input("粘貼頭部信息:")

lst = h.split('\n')

m=[]

for i in lst:

key = i.split(':')[0]

value = i.split(':')[1]

m.append([str(key),str(value)])

return(dict(m))

print(header_format(headers))

用函數式寫法的優點:

閱讀性更強

函數的可復制性

便于修改

爬取一條騰訊視頻的header內容,存入txt。函數式編寫:

包含網頁鏈接

包含title

包含所有headers信息

爬取鏈家二手房數據-深圳

import requests

from bs4 import BeautifulSoup

import re

def url_analysis(u, h, s, n):

'''

用于分析網頁,最后得到一個含有二級網址的標簽列表

u:起始網址

h:頭部信息

s:二級網址包含特定字段

n:頁碼

'''

url_lst=[]

for i in range(1,n+1):

if i == 1:

r = requests.get(url=u+'nb1rs深圳/')

else:

r = requests.get(url=u+'pg'+str(i)+'nb1rs深圳/')

soup = BeautifulSoup(r.text,'lxml')

r2 = soup.find_all('a',href=re.compile(s))

for j in r2:

r3 = j.attrs['href']

url_lst.append(r3)

return(url_lst)

def content(u,h):

'''

爬取網頁標簽信息

u:爬取的二級網址

h:頭部信息

'''

r = requests.get(url=u)

r.encodinge = 'utf-8'

soup = BeautifulSoup(r.text,'lxml')

t = soup.title.text #爬取標題

toprice = soup.find('div',class_='price').find('span',class_='total').text

unprice = soup.find('div',class_='unitPrice').find('span',class_='unitPriceValue').text

area = soup.find('div',class_='area').find('div',class_='mainInfo').text

base = soup.find('div',class_='base').find('div',class_='content').find_all('li')

year = base[-1].text

pattern = 'resblockPosition:\'(.*?)\',' #.*?任意字符

position =re.search(pattern,r.text).group(1)

lng = position.split(',')[0]

lat = position.split(',')[1]

return([t,',', toprice,',', unprice,',', area,',', year,',',lng,',',lat,'\n'])

if __name__ == '__main__': #main函數

web_u = 'https://sz.lianjia.com/ershoufang/'

web_h = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'Accept-Encoding': 'gzip, deflate, br',

'Accept-Language': 'zh-CN,zh;q=0.9',

'Connection': 'keep-alive',

'Cookie': 'TY_SESSION_ID=93f5b43a-5dc9-4d96-b57a-a4eb78f8dc15; lianjia_uuid=614ed9e0-dc25-421f-ba8b-141c574dbb47; _smt_uid=5b80defd.8430805; UM_distinctid=1656f670d3e4ff-02814a7ed21053-b34356b-1fa400-1656f670d3fdd7; _jzqx=1.1535172349.1535172349.1.jzqsr=bj%2Elianjia%2Ecom|jzqct=/.-; _ga=GA1.2.50227061.1535172352; ljref=pc_sem_baidu_ppzq_x; lianjia_ssid=dbe87b29-353a-45c2-97cf-aae666e2771b; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1535172349,1535201139,1535358484; _jzqa=1.3976151446564617700.1535172349.1535201139.1535358484.3; _jzqc=1; _jzqy=1.1535201139.1535358484.1.jzqsr=baidu|jzqct=%E9%93%BE%E5%AE%B6%E7%BD%91.-; _jzqckmp=1; _gid=GA1.2.1182771159.1535358486; select_city=440300; all-lj=c32edd623b8a5a59c7de54c92107bb6c; _qzjc=1; CNZZDATA1255849469=275538323-1535355329-%7C1535355329; CNZZDATA1254525948=1806440598-1535354494-%7C1535354494; CNZZDATA1255633284=72361912-1535358081-%7C1535358081; CNZZDATA1255604082=1229464985-1535356409-%7C1535356409; Hm_lpvt_9152f8221cb6243a53c83b956842be8a=1535359605; _qzja=1.1736056849.1535358739249.1535358739249.1535358739249.1535359600160.1535359605575.0.0.0.10.1; _qzjb=1.1535358739249.10.0.0.0; _qzjto=10.1.0; _jzqb=1.15.10.1535358484.1',

'Host': 'sz.lianjia.com',

'Referer': 'https',

'Upgrade-Insecure-Requests': '1',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'

}

web_s = 'https://sz.lianjia.com/ershoufang/105'

web_n = 3

f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\lianjia.txt','w')

f.seek(0)

f.write('title,total_price萬元,unprice元/平方米,area平方米,產權年限,lng,lat\n')

for i in url_analysis(web_u, web_h, web_s, web_n):

data = content(i,web_h)

f.writelines(data)

print(data)

f.close()

print('finished!')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533840.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python集合去重_python集合去重

[python中對list去重的多種方法 怎么快速的對列表進行去重呢,去重之后原來的順序會不會改變呢? 1.以下的幾種情況結果是一樣的,去重之后順序會改變: i [1,2,3,3,4,2,3,4,5,6,1] news_i [] for id in i: if id not in news_i: news_i.append(…

linux進程pid分配規則,Linux進程pid分配法【轉】

一. 概述Android系統創建進程,最終的實現還是調用linux fork方法,對于linux系統每個進程都有唯一的 進程ID(值大于0),也有pid上限,默認為32768。 pid可重復利用,當進程被殺后會回收該pid,以供后續的進程pid…

sqlserver date類型和字符串比較_基于SQL Server數據庫搭建主從復制實現讀寫分離實戰演練...

一、課程介紹讀寫分離(主從同步)從字面意思就可以理解,就是把對數據庫的讀操作和寫操作分離開。讀寫分離在網站發展初期可以一定程度上緩解讀寫并發時產生鎖的問題,將讀寫壓力分擔到多臺服務器上。讀寫分離的基本原理是讓主數據庫處理事務性增、改、刪操…

linux非標準頭文件,Linux學習:unix的標準化的實現(Linux中各種限制-數據類型-各種標準化頭文件介紹)...

作為Linux的前身,unix標準化是十分重要的。我在這里挑幾個重要的點說明。1:Linux中各種限制。Linux中限制有編譯時限制和運行時限制,另外有一些限制是由于我們的實現不同而不同,因此我們需要調用對應的函數獲取對應的值不同。(eg&…

python怎么導入大小字母_python遍歷小寫英文字母的方法

python遍歷小寫英文字母的方法在c、c等語言中,可以用字符1的for循環來遍歷小寫的26個英文字母,但是由于python語言的特殊性,通過a 1這種代碼并不能成功遍歷,以下是在python中遍歷英文字母的簡潔代碼:import stringfor…

51單片機怎么顯示當前時間_(進階篇)51單片機之按鍵控制蜂鳴器、數碼管、按鍵值移位顯示...

一、實操演示- 按鍵控制蜂鳴器1、圖文詳細獨立按鍵硬件電路蜂鳴器硬件電路2、連接方式:J20的第3號引腳連接到J7引腳,即P15連接J7。J29的第7、8號引腳連接到JP1的第1、2號引腳,即P31連接k1,P30連接k2。下載程序后,觀察現…

linux怎么運行g77,Linux安裝g77編譯器的技巧

在Ubuntu10.10系統中,g77已經被gfortran完全替代了,但并不能完全兼容過去的g77,這樣就不能使用一些用977編譯的程序了。所以我們只能自己再安裝g77了。今天華軍小編給大家展示的是Linux安裝g77編譯器的技巧,精心挑選的內容希望大家…

oracle 結果集已耗盡_java.sql.SQLException: 結果集已耗盡

編寫了jsp誰能幫忙看下有什么問題編寫了jsp 誰能幫忙看下 有什么問題技術交流ResultSet rsnull;String str"select publish_id,publish_name,publish_time,publish_text from comment_tb order by publish_time desc ";query.connect();rsquery.select(str);while(rs…

vs使用未初始化的內存怎么解決_遇到C語言內存錯誤怎么辦?一定要找準這六個原因...

一、沒有為指針分配內存定義了指針變量,但是沒有為指針分配內存,即指針沒有指向一塊合法的內存。淺顯的例子就不舉了,這里舉幾個比較隱蔽的例子。1、結構體成員指針未初始化struct student { char *name; int score; }stu,*pstu; int main() …

linux服務器如何設置雙網卡,linux服務器設置(雙網卡共享上網)

一、網絡拓補結構:服務器:兩網卡的設置:eth0:202.96.168.100 掩碼:255.255.255.0 網關:202.96.168.68 #與 Inte.Net 相聯eth1:192.168.1.1掩碼:255.255.255.0#與局域網相聯客戶機子網段:192.1…

pwn環境搭建_pwndbg、pwntools環境搭建(Unix系統)

目錄[TOC]pwndbg環境搭建項目地址https://github.com/pwndbg/pwndbg搭建過程1、安裝環境基礎gitpythonpython-pip2、安裝過程使用git命令克隆遠程項目到本地。git clone https://github.com/pwndbg/pwndbg進入項目根目錄并執行一鍵安裝腳本cd pwndbg && ./setup.sh該腳…

cad求和插件_黑科技 | 無BIM建模下平面CAD自動生成門窗表

如果你接到的施工圖既不是用天正出的,也不是用revit出的,還得統計門窗表,那么你需要讀完這篇文章。為了能夠讓自己和所有底層同行們從這項無腦又燒腦的機械勞動中解脫,C君近期利用茶余飯后的時間開發了一個小插件,可以…

linux數據庫實例開機啟動,linux下數據庫實例開機自啟動設置

linux下數據庫實例開機自啟動設置 1、修改/oratab [rootorg54 ~]# vi/etc/oratab --把N改為Y,如下提示 # This file is used by ORACLEutilities. It is created by root.sh # and updated by the Database ConfigurationAssistant when creating # a datablinux下數…

panic 蘋果aop_Go Web開發之Revel - 攔截器

一個攔截器是一個框架在調用action方法前或后調用的函數. 它允許一種AOP的形式, 它經常被用于做下面幾種事情:Request loggingError handlingStats keeping在Revel里, 一個攔截器能接受兩種形式:1. 函數攔截器: 一個函數滿足沒有訪問特定的應用程序Controller被調用在應用程序中…

make找不到linux內核函數,linux內核make menuconfig出錯

今天實驗剛從服務器上遷移過來的維護的linux 9260的內核,使用make menuconfig時出錯,報錯為:yongtaoyongtao-desktop:~/public/linux_release/linux-2.6.24$ make menuconfigHOSTCC scripts/kconfig/conf.oHOSTCC scripts/kconfig/kxgettex…

tensorboard ckpt pb 模型的輸出節點_算法工程化系列——模型固化

摘要基于tensorflow訓練的模型一般被保存為ckpt形式的文件,隨著當前深度學習模型網絡越來越大,對應模型也會非常大。當對外提供服務的時候,如果采用ckpt的形式,服務進程被調起來非常困難,且推理服務一般速度也較慢(會達…

深度linux內核升級,深度操作系統 2020.11.11 更新發布:內核升級

原標題:深度操作系統 2020.11.11 更新發布:內核升級IT之家11月11日消息 今日,深度操作系統宣布2020.11.11 更新現已發布。本次更新包括升級內核、Debian 10.6 倉庫以及系統安全性更新。系統安全方面,本次更新修復了 Firefox-ESR 安…

unity 使用mysql實現登錄注冊_用mysql實現登錄注冊功能

1、創建用戶表表結構如下idunameupwdisdelete注意:需要對密碼進行加密。如果使用md5加密,則密碼包含32個字符。如果使用sha1加密,則密碼包含40個字符,這里使用這種方式。md5加密方式:import hashlibpwd 123456my_md5 …

python爬電影_使用Python多線程爬蟲爬取電影天堂資源

最近花些時間學習了一下Python,并寫了一個多線程的爬蟲程序來獲取電影天堂上資源的迅雷下載地址,代碼已經上傳到GitHub上了,需要的同學可以自行下載。剛開始學習python希望可以獲得寶貴的意見。 先來簡單介紹一下,網絡爬蟲的基本實…

打不開磁盤配額linux,九度OJ 1455 珍惜現在,感恩生活 -- 動態規劃(背包問題)...

題目描述:為了挽救災區同胞的生命,心系災區同胞的你準備自己采購一些糧食支援災區,現在假設你一共有資金n元,而市場有m種大米,每種大米都是袋裝產品,其價格不等,并且只能整袋購買。請問&#xf…