Я очень новичок в программировании, поэтому извиняюсь, если это новичок.Я исследователь, и я строю пауков, чтобы позволить мне сканировать конкретные результаты поиска IGN, игрового форума.Первый паук собирает каждую запись в результатах поиска вместе с URL-адресами, а затем второй паук сканирует каждый из этих URL-адресов для содержимого.
Проблема заключается в том, что IGN перенаправляет URL-адреса, связанные с определенным сообщением, на новыйURL, который включает в себя #bookmark в конце адреса.Это позволяет посетителю страницы переходить непосредственно к соответствующему сообщению, но я хочу, чтобы мой паук переполз по всей цепочке.Кроме того, мой паук в результате ошибки (911) после перенаправления не возвращает данных.Единственные данные получены из любых результатов поиска, которые связаны непосредственно с темой, а не с сообщением.
Я абсолютно озадачен и смущен, поэтому любая помощь будет потрясающей!Оба паука прикреплены ниже.
Паук 1:
myURLs = [] baselineURL = "https://www.ign.com/boards/search/186716896/?q=broforce&o=date&page=" for counter in range (1,5):
myURLs.append(baselineURL + str(counter))
class BroforceIGNScraper(scrapy.Spider):
name = "foundation"
start_urls = myURLs
def parse(self,response):
for post in response.css("div.main"):
yield {
'title': post.css("h3.title a::text").extract_first(),
'author': post.css("div.meta a.username::text").extract_first(),
'URL': post.css('h3 a').xpath('@href').extract_first(),
}
Паук 2:
URLlist = []
baseURL = "https://www.ign.com/boards/"
import csv
with open('BroforceIGNbase.csv', 'r', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
URLlist.append(baseURL + row['URL'])
class BroforceIGNScraper(scrapy.Spider):
name = "posts2"
start_urls = URLlist
# handle_httpstatus_list = [301]
def parse(self,response):
for post in response.css(".messageList"):
yield {
'URL': response.url,
'content': post.css(".messageContent article").extract_first(),
'commentauthor': post.css("div.messageMeta a::text").extract_first(),
'commentDateTime': post.css('div.messageMeta a span.DateTime').xpath('@title').extract_first(),
}