from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re
req = Request("https://www.youtube.com/watch?v=YBn0TxzmKXI")
html_page = urlopen(req)
soup = BeautifulSoup(html_page, "lxml")
tags = soup.find_all('a')
for tag in tags:
t = tag.get('href')
x = t.find('watch?v')
if x > 0:
with open("C:\BG\Output.txt", "a+") as text_file:
text_file.write("Links are :: " % x)
我试图写入名为output.txt的文件,而不是在屏幕上打印。 另外,如果包含文本“ google”,我也想跳过写入文件
我该怎么做 但是这段代码没有做到
答案 0 :(得分:0)
您的代码缩进似乎存在问题。如果您将行text_file.write("Links are :: " % x)
的行缩进更右,那可能会解决您的问题。
您可以尝试使用String.index()
(linked here)来查看是否可以找到'google.com'
的情况。
答案 1 :(得分:0)
if 'watch?v' in t and 'google' not in t:
with open("Output.txt", "a+") as text_file:
text_file.write("Links are :: " + t)
text_file.write('\n')
text
中的简单string
可以为没有text not in
的标签提供匹配google
的作品
输出
Links are :: /watch?v=rb8K4nv2y7A
Links are :: /watch?v=rb8K4nv2y7A
.
.
答案 2 :(得分:0)
您在这里有两个错误:
text_file.write("Links are :: " % x)
第一个不应该在其中插入变量的%s
,第二个x
是索引,它应该是t
。
为了提高性能,最好open
在循环外进行文件
with open("C:\BG\Output.txt", "a+") as text_file:
for tag in tags:
t = tag.get('href')
x = t.find('watch?v')
# if 'watch?v' in t:
# or
if x > 0:
text_file.write("Links are :: %s\n" % t)
# or
# text_file.write("Links are :: " + t + "\n")