Я изо всех сил пытался получить список ссылок с нескольких страниц форума с контентом, выгруженным по страницам. Мой код работает хорошо (моя цель — выгрузить все разговоры для результата поиска в pdf), но не работает дальше первой страницы тредов. Когда я делаю быстрое сравнение источника страницы двух URL-адресов, я вижу проблему. Второй URL-адрес добавляет «#serp=2» и загружается правильно, но источник страницы тот же, что и ссылки с первой страницы.
Вот мой код ниже. Любые предложения о том, как получить результаты с последующих страниц или есть ли способ получить все результаты сразу?
#! python3
# getE2EResults.py - Opens all E2E threads and saves them to a file.
import requests, sys, webbrowser, bs4, pdfkit
from pypac import PACSession
session = PACSession()
path_wkthmltopdf = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
site_list = []
print('Searching...') # display text while downloading
res = session.get('http://e2e.ti.com/search?q=' + ''.join(sys.argv[1:]) + '&category=forum&date=&customdaterange=0&startdate=&enddate=')
res.raise_for_status()
# Retrieve top search result links.
soup = bs4.BeautifulSoup(res.text,'lxml')
# Find the number of pages in search results
mydivs = soup.findAll("div", {"class": "search-view-by-sort"})
string1 = mydivs[0].text
numberOfResults = [int(s) for s in string1.split() if s.isdigit()]
numberOfPages = (numberOfResults[0]//10)
if (numberOfResults[0]%10 > 0):
numberOfPages += 1
print(str(numberOfPages) + ' pages of results')
###########################################
# Find all 10 post links for the first page, add to site list
linkElems = soup.select('.name a')
numOpen = min(10, len(linkElems))
for i in range(numOpen):
res1 = session.get(linkElems[i].get('href'))
res1.raise_for_status()
site_list.append(linkElems[i].get('href'))
# soup1 = bs4.BeautifulSoup(res1.text)
# webbrowser.open(linkElems[i].get('href'))
# Repeat for all pages in search results
if (numberOfPages > 1):
for n in range(2,(numberOfPages+1)):
res = session.get('http://e2e.ti.com/search?q=' + ''.join(sys.argv[1:]) + '&category=forum&date=&customdaterange=0&startdate=&enddate=#serp='+str(n))
#print('http://e2e.ti.com/search?q=' + ''.join(sys.argv[1:]) + '&category=forum&date=&customdaterange=0&startdate=&enddate=#serp='+str(n))
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text,'lxml')
linkElems = soup.select('.name a')
numOpen = min(10, len(linkElems))
for i in range(numOpen):
res1 = session.get(linkElems[i].get('href'))
res1.raise_for_status()
site_list.append(linkElems[i].get('href'))
counter = 1
for item in site_list:
print(str(counter) + ' ' + item)
'''
# Create pdf of all Results
#print(site_list)
counter = 1
for item in site_list:
pdfkit.from_url(item, 'out'+str(counter)+'.pdf', configuration=config)
counter += 1
#pdfkit.from_url(site_list, ''.join(sys.argv[1:])+'.pdf', configuration=config)
'''