私が作成したクローラは、Webページから名前とURLを取得しています。今、次のページからデータを取得するために、next_pageによって生成されたリンクをクローラが使用するようにすることはできません。私はクラスを使ってクローラを作成するのがとても新しいです。なぜなら、私は自分の考えでさらに動くことができないからです。私はすでにコード内で少し歪曲していますが、何も結果をもたらさず、エラーもスローしません。誰かがそれを調べてくれることを願っています。次のページの生成リンクを再帰的にクロールすることはできません
import requests
from lxml import html
class wiseowl:
def __init__(self,start_url):
self.start_url=start_url
self.storage=[]
def crawl(self):
self.get_link(self.start_url)
def get_link(self,link):
url="http://www.wiseowl.co.uk"
response=requests.get(link)
tree=html.fromstring(response.text)
name=tree.xpath("//p[@class='woVideoListDefaultSeriesTitle']/a/text()")
urls=tree.xpath("//p[@class='woVideoListDefaultSeriesTitle']/a/@href")
docs=(name,urls)
self.storage.append(docs)
next_page=tree.xpath("//div[contains(concat(' ', @class, ' '), ' woPaging ')]//a[@class='woPagingItem']/@href")
for npage in next_page:
if npage is not None:
self.get_link(url+npage)
def __str__(self):
return "{}".format(self.storage)
crawler=wiseowl("http://www.wiseowl.co.uk/videos/")
crawler.crawl()
for item in crawler.storage:
print(item)
あなたの答えはありがとうございました。試すものは何もありません。あなたが私の乱雑なコードに触れるたびに、それは今のように魔法のように動作します。私はここからもう一つ期待しています:最初の列のビデオタイトルとリンクが2番目の列にあるように、結果を2つの列に表示するにはどうすればいいですか?私は結果のコードがリストとして解析されていることを意味しました。それは私のせいだ。もう一度おねがいします。 – SIM
forループを更新し、2つの列を出力します。リンクが完全なURLになるようにするには、 'get_link'の8行目のコメントを外すことができます –
OMG !!!!!あなたがここでやったことは、私の期待をはるかに超えています。それはすべての問題を解決します。長い生きているt.m.adam !!!! – SIM