如何使用Python,请求和美丽的汤找到与关键字相关的链接

时间:2017-02-13 16:51:08

标签: python web-scraping beautifulsoup python-requests shopify

我是非常新的python请求和漂亮的汤,所以我的代码可能非常糟糕。

我现在拥有的:

<?php
class addDeviceTest extends PHPUnit_Extensions_Selenium2TestCase
{
  protected function setUp()
  {
    $this->setBrowser("chrome");
    $this->setBrowserUrl("http://local.adexpress-web.com/");
  }

  public function testMyTestCase()
  {
    $this->open("/devices");
    $this->click("//button[@onclick=\"showModel('devices/create')\"]");
    sleep(10);
    $this->type("name=name", "testing device");
    $this->select("name=orientation", "label=Landscape");
    $this->select("name=store_id", "label=Dena Kilback");
    $this->type("name=aisle", "345546577");
    $this->click("id=add_form_save");
    sleep(10);
    $this->click("css=button.confirm");
  }
}
?>

我正在解析的XML文件示例:

f = open('sites.txt','r')
sitelist = []
for line in f:
    sitelist.append(line.strip())
getsites = ['']
print(sitelist)
for i in range(len(sitelist)):
    getsites.append(sitelist[i])

for i in range(len(sitelist)):
    temp = requests.get(sitelist[i])
    data = temp.text
    soup = BeautifulSoup(data, "html.parser")
    for url in soup.find_all("Yeezy"):
        print(element.find_previous_sibling('loc'))
        print(url.text)

我想要做的是通过然后打印存储在其中的与之关联的链接来获取关键字。

1 个答案:

答案 0 :(得分:1)

为了找到所有你需要给它一个标签来寻找。如果您只想要包含单词“Yeezy”的那种类型的标签,那么在for循环中检查标签的文本是否是您要查找的字符串。如果它是你正在寻找的字符串,那么你就有了想要的元素,并且可以打印网址。

对于大多数网址来说,这只是

for url in soup.find_all('a')
    if "Yeezy" in url.get_text():
        print(url['href'])

更像是你的

for url in soup.find_all('url')
    if url.find('image:title') and url.loc:
        if "Yeezy" in url.find('image:title').get_text()
            print(url.find('image:loc').get_text())

有关其他信息,请访问get_text()

因为此时您正在尝试获取图片,所以您可能也想查看this answer。您需要一个可以读取和存储图像的库,而不是尝试将其作为内置python对象访问。