我正在尝试取消电影院的放映时间。当我观察到该站点用于检索放映时间(https://www.majorcineplex.com/booking2/search_showtime/cinema=1)的POST请求时,它可以正常工作。
但是,当我直接在浏览器中使用POST请求(https://www.majorcineplex.com/ajaxbooking/ajax_showtime)时。它向我显示“此节目没有任何信息”。
我发现这很奇怪,因为两者都是从同一个Chrome浏览器中触发的,但结果却有所不同。
对于提供的任何帮助/建议,我预先表示感谢。
更新2019年5月29日
这是我的Scrapy蜘蛛代码。
基本上从响应中,我正在尝试使用 class = book_st_contain 检索div元素。
我已经确定该div元素在HTML中,就像我使用Chrome开发工具所检查过的一样。但是,当我运行蜘蛛时,它不存在。
class SessionSpider(scrapy.Spider):
name = 'session'
start_urls = [
'https://www.majorcineplex.com/booking2/search_showtime/cinema=1'
]
def parse(self, response):
f = open('response.txt', 'w')
f.write(response.text)
答案 0 :(得分:0)
您需要确保标题和发布的正文与您在浏览器devtools中看到的匹配:
复制它的刮擦蜘蛛看起来像这样:
class MySpider(spider):
name = 'major'
showtime_url = "https://www.majorcineplex.com/ajaxbooking/ajax_showtime"
showtime_headers = {
'Accept': "*/*",
'X-Requested-With': "XMLHttpRequest",
'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8",
}
showtime_payload = "movie_text=&cinema_text={}".format
def start_requests():
# crawl cinemas with ids 1 to 10
for cinema in range(1, 10):
payload = self.showtime_payload(cinema)
yield Request(
self.showtime_url,
headers=self.showtime_headers,
body=payload,
method='POST'
)
首先,您必须确保存在Content-Type
和X-Requested-With
标头,并与您在检查器中看到的值匹配。