如何格式化字符串选择?
How to format the string selection?
我刚开始使用 python 例程从许多基于服务器名称的网页中抓取链接,但即使它有效,但输出的格式也不是预期的:
期望的输出:
https://www.someserver.com/files/1
https://www.someserver.com/files/2
https://www.someserver.com/files/3....
实际输出:
[None, '//server.org', '//server.org', '//server.org/recent', '//server.org/popular', '//server.org/trolls', 'https://server.org/software/', 'https://www.serverstore.com', '//server.org/submission', '//server.org/my/login', '//server.org/my/newuser', '//devices.server.org', '//build.server.org', '//entertainment.server.org', '//technology.server.org', '//server.org/?fhfilter=somefilter', '//science.server.org', '//yro.server.org', 'http://rss.server.org/server/serverMain', 'http://www.facebook.com/server', 'https://server.org', '#', '//server.org/blog', '#', '#', '#', '//server.org']
那么如何自定义串联以获得预期的格式而不是 //server.org,或者如何格式化 soup.findAll
和 the append
。
非常感谢。
代码
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re
req = Request("https://somepagewithlinks.com")
html_page = urlopen(req)
soup = BeautifulSoup(html_page, "lxml")
links = []
for link in soup.findAll('a'):
links.append(link.get('href'))
print(links)
file = open("lk", "w")
lista = repr(links)
file.write(str(links))
file.close
更新
感谢 uingtea,但由于更改 link/links 指令失败并显示与
相关的错误,我迷路了
file.close
<built-in method close of _io.TextIOWrapper object at 0x7ffe8ec74b40>
并且在使用 file.close()
时它会创建一个空文件。我知道必须定义一个列表(链接),然后它应该被引用到 links.instruction()。我缺少什么?
检查字符串开始
for link in soup.findAll('a'):
link = link.get('href')
if link.startswith('//'):
link= 'https:' + link
elif link.startswith('#'):
link= 'https/domainname/' + link
links.append(link)
我刚开始使用 python 例程从许多基于服务器名称的网页中抓取链接,但即使它有效,但输出的格式也不是预期的:
期望的输出:
https://www.someserver.com/files/1
https://www.someserver.com/files/2
https://www.someserver.com/files/3....
实际输出:
[None, '//server.org', '//server.org', '//server.org/recent', '//server.org/popular', '//server.org/trolls', 'https://server.org/software/', 'https://www.serverstore.com', '//server.org/submission', '//server.org/my/login', '//server.org/my/newuser', '//devices.server.org', '//build.server.org', '//entertainment.server.org', '//technology.server.org', '//server.org/?fhfilter=somefilter', '//science.server.org', '//yro.server.org', 'http://rss.server.org/server/serverMain', 'http://www.facebook.com/server', 'https://server.org', '#', '//server.org/blog', '#', '#', '#', '//server.org']
那么如何自定义串联以获得预期的格式而不是 //server.org,或者如何格式化 soup.findAll
和 the append
。
非常感谢。
代码
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re
req = Request("https://somepagewithlinks.com")
html_page = urlopen(req)
soup = BeautifulSoup(html_page, "lxml")
links = []
for link in soup.findAll('a'):
links.append(link.get('href'))
print(links)
file = open("lk", "w")
lista = repr(links)
file.write(str(links))
file.close
更新
感谢 uingtea,但由于更改 link/links 指令失败并显示与
file.close
<built-in method close of _io.TextIOWrapper object at 0x7ffe8ec74b40>
并且在使用 file.close()
时它会创建一个空文件。我知道必须定义一个列表(链接),然后它应该被引用到 links.instruction()。我缺少什么?
检查字符串开始
for link in soup.findAll('a'):
link = link.get('href')
if link.startswith('//'):
link= 'https:' + link
elif link.startswith('#'):
link= 'https/domainname/' + link
links.append(link)