Python For循环和If语句在web抓取中未正确循环

Python For循环和If语句在web抓取中未正确循环,python,for-loop,web-scraping,beautifulsoup,lxml,Python,For Loop,Web Scraping,Beautifulsoup,Lxml,这应该是刮给定的网站,直到链接被上传到网站,然后给我发电子邮件的信息,这一切都很好,如果我在网站上已经输入了链接的关键字,但如果我给的关键字不在网站上,一个随机链接是电子邮件给我。我如何循环这个脚本,直到找到带有给定3个关键字的链接,然后继续脚本的其余部分。。请以任何你能想到的方式循环这个!(我省略了电子邮件信息) 在这里。我更改了它,使代码更清晰。我认为应该行得通 from bs4 import BeautifulSoup import requests import smtplib from

这应该是刮给定的网站,直到链接被上传到网站,然后给我发电子邮件的信息,这一切都很好,如果我在网站上已经输入了链接的关键字,但如果我给的关键字不在网站上,一个随机链接是电子邮件给我。我如何循环这个脚本,直到找到带有给定3个关键字的链接,然后继续脚本的其余部分。。请以任何你能想到的方式循环这个!(我省略了电子邮件信息)


在这里。我更改了它,使代码更清晰。我认为应该行得通

from bs4 import BeautifulSoup
import requests
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import urllib2
import time
from lxml import etree
while True:
    keyword1 = "spam"
    keyword2 = "notonwebsite"
    keyword3 = "stackoverflow"
    print("starting")
    r = requests.get('http://kithnyc.com/sitemap_products_1.xml?from=60594372&to=9545825095')
    soup = BeautifulSoup(r.text, 'lxml')
    links = soup.find_all('loc')
    for link in links:
        while (keyword1 in link.text and keyword2 in link.text and keyword3 in link.text):
            print(link.text)
            jake = str(link.text)

在这里。我更改了它,使代码更清晰。我认为应该行得通

from bs4 import BeautifulSoup
import requests
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import urllib2
import time
from lxml import etree
while True:
    keyword1 = "spam"
    keyword2 = "notonwebsite"
    keyword3 = "stackoverflow"
    print("starting")
    r = requests.get('http://kithnyc.com/sitemap_products_1.xml?from=60594372&to=9545825095')
    soup = BeautifulSoup(r.text, 'lxml')
    links = soup.find_all('loc')
    for link in links:
        while (keyword1 in link.text and keyword2 in link.text and keyword3 in link.text):
            print(link.text)
            jake = str(link.text)

控制流有问题。不管关键字是否存在,其余代码都将运行。将代码的其余部分放在break语句所在的位置。在最后一行加上破折号。@MohammadYusufGhazi你能写下这个吗?当我这样做的时候,它会在脚本中运行一次,并且结束时只打印“开始”…@martianwars有什么建议吗?如果可以,请减少您的代码,并提供@MohammadYusufGhazi肯定的东西,我一直在玩它,请尝试循环这个,直到第一个语句是真的,如果您的控制流有问题。不管关键字是否存在,其余代码都将运行。将代码的其余部分放在break语句所在的位置。在最后一行加上破折号。@MohammadYusufGhazi你能写下这个吗?当我这样做的时候,它只会在脚本中运行一次,并且结束时只打印“开始”…@martianwars有什么建议吗?如果可以,请减少您的代码,并提供@MohammadYusufGhazi肯定的东西,我一直在玩它,如果语句是真的,请尝试循环这个直到第一个