Python爬取知乎溫酒小故事

2021-08-06 05:35:14 字數 1713 閱讀 4149

關於登陸的問題,可以參考我的另一篇部落格:

在這裡記錄一下我在爬取溫酒小故事的時候遇到的問題以及解決辦法:

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...