[英]How to get all links from php page using python and 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 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页面中提取链接?
任何帮助,将不胜感激。 谢谢..
我不知道机械化,但我使用了pattern.web模块,它具有易于使用的HTML DOM Parser。 我认为站点地图与您正在寻找的类似:
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)
Mechanize特有的语法如下。
剂= Mechanize.new
页= agent.get(URL)
page.links返回页面中所有链接的数组。
page.links.first.text返回第一个链接的文本(不带href)。
page.link_with(:text =>“Text”)。单击将返回单击特定页面时生成的页面
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.