Я хочу сканировать URL-адреса вопросов / ответов в переполнении стека с тегом Android Studio для исследовательских целей.На сайте должно быть около 55 628 вопросов: https://stackoverflow.com/questions/tagged/android-studio?sort=newest&page=1&pagesize=15
Однако я могу сканировать только 50 вопросов.Он заканчивается сканированием в середине четвертой страницы
Я чувствую, что должен написать для цикла , чтобы выполнить итерацию URL, но я не могу представить, где сначала пересмотреть.Как пересмотреть мою программу?
import requests
from bs4 import BeautifulSoup
import re
import json
class Stack(object):
def __init__(self):
self.baseurl = "https://stackoverflow.com"
self.starturl = "https://stackoverflow.com/questions/tagged/android-studio"
# The second page's URL: https://stackoverflow.com/questions/tagged/android-studio?sort=newest&page=2&pagesize=15
# The third page's URL: https://stackoverflow.com/questions/tagged/android-studio?sort=newest&page=3&pagesize=15
def start_requests(self, url):
r = requests.get(url)
return r.content
def parse(self, text):
soup = BeautifulSoup(text, 'html.parser')
divs = soup.find_all('div', class_ = 'question-summary')
for div in divs:
div.find('div', class_ = 'summary').find_all('div')[1].find_all('a')
yield {
'title': div.h3.a.text,
'url': self.baseurl + div.h3.a.get('href')
}
def start(self):
text = self.start_requests(self.starturl) #呼叫function start_requests
items = self.parse(text)
s = json.dumps(list(items), indent = 4, ensure_ascii=False)
with open('stackoverflow.json', 'w', encoding = 'utf-8') as f:
# If answer is nonempty
f.write(s)
stack = Stack()
stack.start()