昨天收到一道面試題爬取的新聞,當時看到的時候簡直簡單爆了,事實證明的確是,將將將,就是這個頁面,很普通啊,開幹。。。
1.首先發現在檢視源**的時候看不見這些資料,所以需要js抓一下,注意到url的最後乙個引數是個時間戳,然後就是headers裡一定要放上referer,不然獲取不到的(就因為這個referer,讓我手足無措的找了半個小時哪的問題,所以說一定要細心)
2.requests.get(url),獲取一下內容,你就會神奇的發現,已經爬下來了,嚶嚶嚶~
now=int(time.time()*1000)
# 新聞獲取的介面,其中page可以切換1,2頁,now可以切換時間
3.因為獲取到的值不是,dict或者是json的樣子,所以做乙個正則提取出json,然後eval轉成dict,然後就可以搞事情了
pattern = re.compile(r'.*rollback\((.*)\)')
m = pattern.match(text)
if m :
string=m.group(1)
dict=eval(string)
for each in dict['data']['article_info']:
title=each['title']
url=each['url'].replace("\\","")
time_tech=each['time']
img=each['img']
desc=each['desc']
4.儲存成csv,因為本來打算存資料庫的,後來想想還是直接存成檔案吧,省事,還有就是不知道我的open(file,「a+」)不能讀,可能是直接到最後一行了?所以我就在不存在的時候建立乙個,存在就open(file,「r+」), html_word(url)只是乙個爬取具體新聞頁的東西的函式,如果需要可以豐富一下,所以直接上完整**
#coding=utf-8
import requests
import time
import re
import csv
import os
# 爬取新聞頁內容,只是儲存了整個的內容
def html_word(url):
response=requests.get(url)
text=response.text.encode('utf-8')
return text
now=int(time.time()*1000)
# 新聞獲取的介面,其中page可以切換1,2頁,now可以切換時間
url=""%now
headers=
response=requests.get(url,headers=headers)
text=response.text.strip()
print(text)
pattern = re.compile(r'.*rollback\((.*)\)')
m = pattern.match(text)
if m :
string=m.group(1)
dict=eval(string)
for each in dict['data']['article_info']:
title=each['title']
url=each['url'].replace("\\","")
time_tech=each['time']
img=each['img']
desc=each['desc']
# 存放到csv檔案中
filename='stu_csv.csv'
if not os.path.exists(filename):
course = open(filename,'w',encoding='utf8')
course.close()
with open(filename,"r+") as csvfile:
reader = csv.reader(csvfile)
column = (row[1] for row in reader if row)
if url in column:
print("我存在了")
continue
else:
word=html_word(url)
csv_write = csv.writer(csvfile, dialect='excel')
# 寫入具體內容
csv_write.writerow((title,url,time_tech,img,desc,word))
print("我執行了一次")
ok,有什麼問題可以隨時問哦
python requests網路爬取
1.京東商品頁面的爬取 import requests url try r requests.get url r.raise for status print r.encoding print r.text 1000 except print 爬取失敗 2.亞馬遜商品頁面的爬取 import req...
Python Requests庫的爬取效能分析
任意 找個url,測試一下成功爬取100次網頁的時間。某些 對於連續爬取頁面將採取遮蔽ip的策略,所以,要避開這類 import requests import time def gethtmltext url try try except 用於異常處理 r requests.get url,tim...
Python Requests 學習筆記
一直想用 python 做點網路相關的東西,找了下,發現了 requests 庫,現記錄下學習筆記。requests 是什麼 requests 入門 requests 提高 首先,requests 是什麼。requests是乙個封裝了 http 操作和請求的庫,可以很方便的抓取網頁的內容,囧,這個是...