用python从网站中提取链接
我正在尝试创建一个程序,从网页中提取所有链接,并将它们放入列表中用python从网站中提取链接,python,Python,我正在尝试创建一个程序,从网页中提取所有链接,并将它们放入列表中 import urllib.request as ur #user defined functions def findLinks(website): links = [] line = website.readline() while 'href=' not in line: line = website.readline() p while '</a&
import urllib.request as ur
#user defined functions
def findLinks(website):
links = []
line = website.readline()
while 'href=' not in line:
line = website.readline()
p
while '</a>' not in line :
links.append(line)
line = website.readline()
#connect to a URL
website = ur.urlopen("https://www.cs.ualberta.ca/")
findLinks(website)
将urllib.request导入为ur
#用户定义函数
def FindLink(网站):
链接=[]
line=website.readline()
而“href=”不在行中:
line=website.readline()
P
当“”不在行中时:
links.append(行)
line=website.readline()
#连接到URL
网站=ur.urlopen(“https://www.cs.ualberta.ca/")
FindLink(网站)
当我运行这个程序时,它会延迟并返回一个TypeError:string不支持缓冲区干扰
有任何指针的人?Python不能使用带字符串的字节,为了使其“工作”,我必须将
“href=”
更改为b”href=“
和”
更改为b”“
不过,这些链接没有被提取出来。使用,我能够做到这一点:
def findthem(website):
import re
links = []
line = website.readline()
while len(line) != 0:
req = re.findall('href="(.*?)"', line.decode())
for l in req:
links.append(l)
line = website.readline()
return links
Python不能使用带字符串的字节,为了使其“工作”,我必须将
“href=”
更改为b”href=“
和”
更改为b”“
不过,这些链接没有被提取出来。使用,我能够做到这一点:
def findthem(website):
import re
links = []
line = website.readline()
while len(line) != 0:
req = re.findall('href="(.*?)"', line.decode())
for l in req:
links.append(l)
line = website.readline()
return links
从URL获取所有链接的更好方法是使用类似的库解析HTML 下面是一个从URL获取所有链接并打印它们的示例
import requests
from bs4 import BeautifulSoup
html = requests.get("https://www.cs.ualberta.ca/").text
soup = BeautifulSoup(html, "html.parser")
for a in soup.find_all("a"):
link = a.get("href")
if link:
print(link)
从URL获取所有链接的更好方法是使用类似的库解析HTML 下面是一个从URL获取所有链接并打印它们的示例
import requests
from bs4 import BeautifulSoup
html = requests.get("https://www.cs.ualberta.ca/").text
soup = BeautifulSoup(html, "html.parser")
for a in soup.find_all("a"):
link = a.get("href")
if link:
print(link)
python的哪个版本?有很多工具可以让这变得更容易,您假设html中有换行符,或者链接中没有换行符。你应该在谷歌上搜索链接Python——这会让你回到一些有用的问答环节。可能是哪个版本的Python的重复?有很多工具可以让这更容易,你假设html中有换行符,或者链接中没有换行符。你应该在谷歌上搜索Python链接——这应该会让你回到一些有用的问答环节。可能重复哦,不错的帖子,我在寻找一个简单的方法,但除了阅读其他stackoverflow帖子,我真的不知道其他解决方案。谢谢。是的,这是一个书签。每当你建议使用正则表达式解析HTML时,这里的人都会非常不高兴。谢谢你,这解决了问题!作为将来的参考,为什么另一种方法不起作用?代码返回一个包含链接的行列表,而不是链接本身,脚本读取所有行,直到它读取一个
href
,然后继续,但追加每个不包含
的行。当你做这样的事情时,你应该考虑到并不是每个html页面都是用缩进、换行等写的。。。这就是为什么建议使用html/xml解析器,因为它们效率更高。。。对于链接“class=”sister“id=”link3“>Tillie;我该如何具体提取之前写有“Tillie”的部分?哦,不错的帖子,我正在寻找一种简单的方法,但除了阅读其他stackoverflow帖子之外,我真的不知道任何其他解决方案。谢谢。是的,这是一个书签。每当你建议使用正则表达式解析HTML时,这里的人都会非常不高兴。谢谢你,这解决了问题!作为将来的参考,为什么另一种方法不起作用?代码返回一个包含链接的行列表,而不是链接本身,脚本读取所有行,直到它读取一个href
,然后继续,但追加每个不包含
的行。当你做这样的事情时,你应该考虑到并不是每个html页面都是用缩进、换行等写的。。。这就是为什么建议使用html/xml解析器,因为它们效率更高。。。对于链接“class=”sister“id=”link3“>Tillie;我将如何具体提取在测试之前显示“Tillie”的部分?