【发布时间】:2021-01-21 14:34:57
【问题描述】:
我正在尝试抓取一个webpage,它会在我滚动时加载第 2 页的结果,依此类推。所以我得到了它运行的 api (img) 的 url,它应该可以正常工作。
但它只有在我使用 requests 库时才有效。当我使用与 scrapy 相同的 url 运行 requests.get() 时,我得到响应 200,但使用 scrapy 它返回 500 状态。我不知道为什么这不适用于scrapy,对此有何解释?
这就是我想要做的事情
Obrigado。
import scrapy
import json
import re
class ScrapeVagas(scrapy.Spider):
name = "vagas"
base_url = "https://www.trabalhabrasil.com.br/api/v1.0/Job/List?idFuncao=0&idCidade=5345&pagina=%d&pesquisa=&ordenacao=1&idUsuario="
start_urls = [base_url % 100]
download_delay = 1
def parse(self, response):
vagas = json.loads(response.text)
for vaga in range(0, len(vagas)):
yield {
"vaga": vagas[vaga]["df"],
"salario": re.sub("[R\$.]", "", vagas[vaga]["sl"]).strip()
}
【问题讨论】:
-
您可以使用像 Wireshark 这样的网络嗅探器来比较请求。可能他们使用不同的标题。
-
{'vaga': 'Consultor de Vendas', 'salario': '4000,00', 'files': []},我得到了这个结果。
-
@SamsulIslam 哈哈,怎么样?在这里,它仅在从请求中使用“get”或在scrapy之前仍然有效。这是我从scrapy得到的:i.imgur.com/NrDAhb5.png
标签: web-scraping python-requests scrapy