J'essaie d'extraire des URL spécifiques sur une page Web basée sur l'attribut CSS. Je peux tirer le premier, mais j'ai de la difficulté à obtenir l'URL complète ou à obtenir plus d'une URL.Scrapy parse html chaînes à partir de la page Web basée sur l'attribut css
J'ai essayé et rencontré de nombreux problèmes en utilisant joinurl ou parse. Je continue d'obtenir des erreurs globales avec joinurl.
Existe-t-il un moyen plus simple de le faire?
J'utilise Centos 6.5 & Python 2.7.5
Ce code ci-dessous fournira la première URL, mais pas le http://www...inline
import scrapy
class PdgaSpider(scrapy.Spider):
name = "pdgavideos" # Name of the Spider, required value
start_urls = ["http://www.pdga.com/videos/"]
# Entry point for the spiders
def parse(self, response):
SET_SELECTOR = 'tbody'
for brickset in response.css(SET_SELECTOR):
HTML_SELECTOR = 'td.views-field.views-field-title a ::attr(href)'
yield {
'http://www.pdga.com': brickset.css(HTML_SELECTOR).extract()[0]
}
Courant de sortie
http://www.pdga.com
/vidéos/2017-verre soufflé-open-fpo-rd-2-pt-2-poinçonneur-Fajkus-leatherman-c-allen-sacristain-leatherman
Résultat attendu
la liste complète des URL sans interruption
Je n'ai pas assez de points de réputation pour poster un couple exemples
vous remercie tous les deux Tiny.D et Vold pour votre réponse rapide! C'est exactement ce que je cherchais à réaliser. vold: suis-je capable de sortir les données sans le lien de mot ou toute autre chose affichée avant les résultats? – Thomas
Vous êtes les bienvenus. Comme @ Tiny.D l'a déjà signalé: Scrapy doit renvoyer une nouvelle requête ou un nouvel item ou dictionnaire. Si vous voulez simplement afficher la chaîne avec l'url dans la console, il vaut mieux utiliser 'requests' avec les parsers' bs4' ou 'lxml'. – vold
@Thomas J'ai édité ma réponse pour fournir plus de sortie désirée. – vold