0

Webページからすべてのリンクを抽出したいと思います。これが私のこれまでのコードです。

import mechanize
import lxml.html
from time import sleep

links = list()
visited_links = list()

br = mechanize.Browser()

def findLinks(url):
    response = br.open(url)
    visited_links.append(response.geturl())

    for link in br.links():
        response = br.follow_link(link)
        links.append(response.geturl())
        sleep(1)


findLinks("http://temelelektronik.net")

for link in links:
    if link in visited_links:
        links.remove(link)
    else:
        findLinks(link)
        print link

for link in visited_links:
    print link

実際、私はWebクローラーを作成したくありません。私がやりたいのは、Webページからすべてのリンクを抽出し、サイトマップを作成することです。また、mechanizeとpythonを使用して、サーバーからファイルの最終変更時刻を取得できるかどうかも疑問に思います。

私が聞きたいのは、このコードスニペットがHTMLページで正常に機能している間です。phpページからリンクを抽出しません。たとえば、このページ。phpページからリンクを抽出するにはどうすればよいですか?

どんな助けでもいただければ幸いです。ありがとう..

4

3 に答える 3

2

mechanizeはわかりませんが、使いやすいHTMLDOMパーサーを備えたpattern.webモジュールを使用しました。サイトマップはあなたが探しているものと似ていると思います:

from pattern.web import URL, DOM

url = URL("http://temelelektronik.net")
dom = DOM(url.download())
for anchor in dom.by_tag('a'):
    print(anchor.href)
于 2013-02-10T04:04:19.630 に答える
0

これは、Webスパイダーを使用して各リンクにアクセスする別のソリューションです。

import os, sys; sys.path.insert(0, os.path.join("..", ".."))

from pattern.web import Spider, DEPTH, BREADTH, FIFO, LIFO

class SimpleSpider1(Spider):

    def visit(self, link, source=None):
        print "visiting:", link.url, "from:", link.referrer

    def fail(self, link):
        print "failed:", link.url

spider1 = SimpleSpider1(links=["http://www.temelelektronik.net/"], domains=["temelelektronik.net"], delay=0.0)

print "SPIDER 1 " + "-" * 50
while len(spider1.visited) < 5:
    spider1.crawl(cached=False)
于 2013-02-10T12:45:52.770 に答える
0

Mechanizeに固有の構文は次のとおりです。

agent = Mechanize.new

page = agent.get(URL)

page.linksは、ページ内のすべてのリンクの配列を返します。

page.links.first.textは、最初のリンクのテキスト(hrefなし)を返します。

page.link_with(:text => "Text")。clickは、特定のページをクリックした結果のページを返します。

お役に立てれば

于 2014-10-12T11:02:11.797 に答える