爬蟲簡明教程

2021-10-08 23:03:55 字數 3949 閱讀 4375

安裝requests庫

cmd安裝 pip install requests

import requests

r = requests.get(

"")#找出r的內容

r.text 解碼成文字檔案

r.content 看二進位制**(一般用於獲取用二進位制**)

#解碼方式

>>

>r.encoding 'utf-8'

http有很多請求型別(最常見)

get 請求,向特定資源傳送請求

post 請求,向指定資源提供資料和傳送請求

import requests

r = requests.get(

"")r.encoding =

'utf-8'

dict

=r = requests.get(

'',params=

dict

)print

(r.url)

#用params傳遞引數

有時候需要登入乙個**

#傳入使用者名稱和密碼

dict

=r =requests.post(

'',data =

dict

,headers = header)

r.status_code

#請求頭header防止反爬蟲。

header =

2字頭 代表請求已成功被伺服器接收成功

3字頭 301重定向 r.history

4字頭 請求錯誤

5、6字頭 伺服器錯誤

例項:爬取q房網

import requests

from lxml import etree

import csv

import time

defwritecsv

(item)

:with

open

('q房.csv'

,'a'

,encoding=

'utf-8'

)as f:

writer = csv.writer(f)

try:

writer.writerow(item)

except

:print

('write error'

)if __name__ ==

'__main__'

: headers =

start_url =

""for url in

range(1

,2):

houseurl = start_url+

str(url)

r = requests.get(houseurl,headers=headers)

time.sleep(1)

selector = etree.html(r.text)

xiaoqulist = selector.xpath(

'/html/body/div[4]/div/div/div[3]/ul/li'

)#print(xiaoqulist)

for xiaoqu in xiaoqulist:

name = xiaoqu.xpath(

'div[2]/div[1]/a/text()')[

0]#print(name)

bankuai = xiaoqu.xpath(

'div[2]/div[4]/div/text()')[

0]#print(bankuai)

junjia = xiaoqu.xpath(

'div[3]/div[1]/span[1]/text()')[

0]#print(junjia)

item =

[name,bankuai,junjia]

writecsv(item)

print

('正在抓取……………………'

,name)

#/html/body/div[4]/div/div/div[3]/ul/li[1]

#/html/body/div[4]/div/div/div[3]/ul/li[1]/div[2]/div[1]/a

#/html/body/div[4]/div/div/div[3]/ul/li[1]/div[2]/div[4]/div

#/html/body/div[4]/div/div/div[3]/ul/li[1]/div[3]/div[1]/span[1]

from lxml import etree

import requests

defspider

(url)

: r = requests.get(url,headers=headers,proxies=proxies)

return etree.html(r.text)

defget_all_url

(yeshu,neirong)

:for sousuoye in

range(1

,int

(yeshu)+1

):sousuo_url =

""+neirong+

"&_sug_type_=&s_from=input&_sug_=n&type=2&page="

+str

(yeshu)

+"&ie=utf8"

selector = spider(sousuo_url)

meiye_url = selector.xpath(

'//div[@class="txt-box"]/h3/a/@href'

)def

towrite

(wenzi,title)

:try

:with

open

('./wenjian/'

+title.replace(

'|','')

+'.txt'

,'wt'

,encoding=

'utf-8'

)as f:

f.write(wenzi)

print

(,title)

except

: proxies(

)def

spider_xiangqing_url

(url)

: selector = spider(url)

title = selector.xpath(

'//*[@id="activity-name"]/text()')[

0].strip(

) neirong = selector.xpath(

'//p/text()')[

0]wenzi = neirong.xpath(

'string(.)'

).strip(

).replace(

'\r',''

).replace(

'\n',''

) wenzi.encode(

'utf-8'

) towrite(wenzi,title)

if __name__ ==

'__main__'

: headers =

proxies =

sousuoneirong =

input

("請輸入搜尋內容"

) sousuoyeshu =

input

("請輸入搜尋頁數(必須是自然數)"

) all_url=

get_all_url(sousuoyeshu,sousuoneirong)

for url in all_url:

spider_xiangqing_url(url)

Visual Unit 簡明教程

visual unit,簡稱vu,是新一代單元測試工具,功能強大,使用簡單,完全視覺化,不需編寫測試 vu的測試結果使程式行為一目了然,有助於整理程式設計思路,提高程式設計效率和正確性,並能快速排錯 vu還增強偵錯程式功能 如自由後退 用例切換 提高除錯的效率 vu能達到空前的測試完整性,輕鬆完成語...

MYSQL簡明教程

dos進入mysql命令 c mysql h 127.0.0.1 u root p enter password mysql 進入完成 建立資料庫 create database databasename 使用指定資料庫進行操作 方法1 use database databasename 方法2 m...

Struts Hibernate簡明教程

jboss 資助的開源專案,當前比較流行的持久層框架,是一種先進的 jdbc 封裝框架。優點 提高了資料訪問層的開發效率,使我們不必直接呼叫 jdbc 來訪問關係型資料庫。hibernate 建立在物件導向的基礎之上,開發人員只需針對物件進行操作,不必再關心資料庫的連線關閉,sql的執行,以及 re...