Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python和mechanize从php页面获取所有链接_Python_Mechanize - Fatal编程技术网

如何使用python和mechanize从php页面获取所有链接

如何使用python和mechanize从php页面获取所有链接,python,mechanize,Python,Mechanize,我想从网页中提取所有链接。这是到目前为止我的代码 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 l

我想从网页中提取所有链接。这是到目前为止我的代码

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
事实上,我不想写一个网络爬虫。我想做的是从网页中提取所有链接并创建一个站点地图。我还想知道是否可以使用mechanize和python从服务器获取文件的最后修改时间

我想问的是,虽然这个代码片段对HTML页面很有效。它不会从php页面中提取链接。例如如何从php页面中提取链接


任何帮助都将不胜感激。谢谢..

我不知道mechanize,但是我使用了这个模块,它有一个易于使用的HTML DOM解析器。我认为站点地图与您正在寻找的类似:

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)

下面是另一个解决方案,它使用网络蜘蛛访问每个链接

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)
导入操作系统、系统;sys.path.insert(0,os.path.join(“..”,“.”)
从pattern.web导入Spider、深度、宽度、先进先出、后进先出
类SimpleSpider1(Spider):
def访问(自我、链接、来源=无):
打印“访问:”,link.url,“发件人:”,link.referer
def故障(自身、链路):
打印“失败:”,link.url
spider1=SimpleSpider1(链接=[”http://www.temelelektronik.net/“],域=[“temelelektronik.net”],延迟=0.0)
打印“十字轴1”+“-”*50
而len(spider1.visted)<5:
spider1.crawl(cached=False)

特定于Mechanize的语法如下所示

agent=Mechanize.new

page=agent.get(URL)

page.links返回页面中所有链接的数组

page.links.first.text返回第一个链接的文本(不带href)

page.link_with(:text=>“text”)。单击将返回在单击特定页面时产生的页面


希望这有帮助

非常感谢。模块工作得很好。我相信这是用ruby编写的。