Ir para conteúdo

POWERED BY:

  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por reif
      Pessoal, tudo bem? Estou tentando fazer um web scraping com CURL, mas o resultado é diferente do que eu vejo no browser (Chrome).
      O site retorna preços de alugueis de carro. Quando eu abro via browser, ele já mostra automaticamente os valores em reais. Por algum motivo, quando eu faço o request via CURL ele mostra os valores em dólares. Eu consegui fazer com que ele retorne valores em reais utilizando um proxy brasileiro, mas queria achar uma forma direta, sem usar proxy, pq toda hora tenho que ficar atualizando os ips desses proxys.
       
      <?php date_default_timezone_set('America/Sao_Paulo'); $link = ""; function curl($url, $proxy) { $options = Array( CURLOPT_RETURNTRANSFER => TRUE, // Setting cURL's option to return the webpage data CURLOPT_FOLLOWLOCATION => TRUE, // Setting cURL to follow 'location' HTTP headers CURLOPT_AUTOREFERER => TRUE, // Automatically set the referer where following 'location' HTTP headers CURLOPT_CONNECTTIMEOUT => 300, // Setting the amount of time (in seconds) before the request times out CURLOPT_TIMEOUT => 300, // Setting the maximum amount of time for cURL to execute queries CURLOPT_MAXREDIRS => 10, // Setting the maximum number of redirections to follow CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36", // Setting the useragent CURLOPT_URL => $url, // Setting cURL's URL option with the $url variable passed into the function CURLOPT_HTTPPROXYTUNNEL => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ); $ch = curl_init(); // Initialising cURL curl_setopt_array($ch, $options); $data = curl_exec($ch); if ($data === false) $data = curl_error($ch); return stripslashes($data); curl_close($ch); } $scraped_page = curl($link); echo $scraped_page; ?> Minha última tentativa foi adicionar esses parametros abaixo no final do link, mas sem sucesso.
       
      basecurrency=BRL&prefcurrency=BRL&preflang=536&lang=536&crmActionType=&langCurrencyActionType=currency  
       
      Alguém conseguiria me ajudar e possivelmente me explicar o que acontece?
       
      Obrigado!
    • Por wootzor
      Não tenho experiência em Python mas decidi tentar fazer qualquer coisa com o Scrapy, para testes. Assim, estou a tentar recolher os artigos existentes numa determinada página, nomeadamente num elemento DIV com um ID devBody. Nesse sentido, o meu objectivo é obter o título do artigo e o respectivo URL. Assim, estabeleci uma regra para percorrer apenas o conteúdo desse elemento. Acontece que, por alguma razão, a recolha de links não se está a limitar apenas a esse elemento, o que faz com que estejam a ser recolhidos links não relevantes e que depois "baralham" os pares título-URL quando os tento construir. Segue o código:
      from scrapy import Spider from scrapy.linkextractors import LinkExtractor from scrapy.spiders import Rule from stack.items import StackItem class StackSpider(Spider): name = "stack" allowed_domains = ["dev.mysql.com"] start_urls = ["http://dev.mysql.com/tech-resources/articles/"] rules = (Rule(LinkExtractor(restrict_xpaths='//div[@id="devBody"]',), callback='parse'),) def parse(self, response): entries = response.xpath('//h4') items = [] //usar um contador aqui não será, de certeza, a melhor solução mas foi a única que encontrei //para não receber todos os dados recolhidos num único objecto i = 0 for entry in entries: item = StackItem() item['title'] = entry.xpath('//a/text()').extract()[i] item['url'] = entry.xpath('//a/@href').extract()[i] yield item items.append(item) i += 1 Para tentar perceber o que se está a passar, recorri às Developer Tools do Chrome e, através de consultas XPath, tudo parece estar correcto. No entanto, quando tento replicar a mesma lógica no código, algo corre mal. Segundo os logs, é dito que foram de facto recolhidos 57 links, mas há bastantes que estão fora do âmbito (a tal div com ID devBody). Não faço ideia o que possa estar a causar este comportamento. Estou a usar a versão 1.0.5 do Scrapy e Python 2.7. Agradeço desde já qualquer ajuda.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.