python没有写文件。

时间:2018-11-11 02:50:39

标签: python-3.x beautifulsoup

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”,我也想跳过写入文件

我该怎么做 但是这段代码没有做到

3 个答案:

答案 0 :(得分:0)

关于程序未写入文件

您的代码缩进似乎存在问题。如果您将行text_file.write("Links are :: " % x)的行缩进更右,那可能会解决您的问题。

关于检查链接到Google的链接

您可以尝试使用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")