關於登陸的問題,可以參考我的另一篇部落格:
在這裡記錄一下我在爬取溫酒小故事的時候遇到的問題以及解決辦法:
css選擇器無效,只好通過觀察,用正規表示式直接從html裡提取資訊。
import requests
from bs4 import beautifulsoup
import re
from urllib.request import urlretrieve
import time
import random
headers =
cookies = {}
with open('c:/users/lenovo/onedrive/projects/scraping/zhihucookies.txt') as file:
for pair in file.read().split(';'):
key,value = pair.split('=',1)
cookies[key] = value;
limit = 20
offset = 20
while(true):
try:
url = '' % (limit, offset)
r = requests.get(url, headers=headers, cookies=cookies)
soup = beautifulsoup(r.text.encode('utf-8'), 'html.parser')
r1=re.compile('"url": "/p/.*?"')
datas = str(soup)
prefix = ''
count = 0
for link in r1.findall(datas):
link = prefix + str(link)[8:-1]
print(link)
story = requests.get(link, headers=headers, cookies=cookies)
storysoup = beautifulsoup(story.text.encode('utf-8'),'lxml')
refortitle = re.compile('(?<=睡前故事:).+?(?= )')
try:
title = refortitle.findall(storysoup.find('title').contents[0])[0]
except:
continue
img = str(storysoup.select('img'))
reforimg = re.compile('''(?<=src=').+?(?=')''')
imgurl = reforimg.findall(img)[0][2:-2]
path = r'c:\users\lenovo\onedrive\projects\scraping\stories\\'+title+'.png'
urlretrieve(imgurl, path)
time.sleep(random.randint(0,9))
except:
break
finally:
count += 1
limit += 20
offset += 20
print("total: %d stories." % count)
python動態爬取知乎 python爬取微博動態
在初學爬蟲的過程中,我們會發現很多 都使用ajax技術動態載入資料,和常規的 不一樣,資料是動態載入的,如果我們使用常規的方法爬取網頁,得到的只是一堆html 沒有任何的資料。比如微博就是如此,我們可以通過下滑來獲取更多的動態。對於這樣的網頁該如何抓取呢?我們以微博使用者動態為例,抓取某名使用者的文...
python加cookie爬取知乎主頁
from urllib import request zhihu url headers req request.request url zhihu url,headers headers resp request.urlopen req with open zhihu.html w encodin...
Python知乎熱門話題爬取
本例子是參考崔老師的python3網路爬蟲開發實戰寫的 看網頁介面 熱門話題都在 explore feed feed item的div裡面 原始碼如下 import requests from pyquery import pyquery as pq url 今日最熱 url monthly hot...