无法从网站上相应地获取两个字段

时间:2018-06-11 17:35:54

标签: python python-3.x web-scraping

我在python中编写了一个脚本来从网页中获取两个字段。我尝试了一个项目(有条件的第一个),另一个项目使用列表理解。最后,我将它们附加到列表中以打印结果。

我有两个问题:

  1. 在同一个for循环中使用列表理解来有条件地解析一个项目和另一个项目的理想方法。
  2. 当我打印结果时,我会像下面那样得到它们

    [[],[],[],'EUROMESSAGE EXPRESS',[],[],[],[],[],[],[],['info@euromessageexpress.com'],[ ],[],[],[],[],[],[],[]]

  3. 我的预期输出:

    EUROMESSAGE EXPRESS info@euromessageexpress.com
    

    不喜欢这样:

    EUROMESSAGE EXPRESS 
    info@euromessageexpress.com
    

    Link to the webpage

    这是我的剧本:

    from bs4 import BeautifulSoup
    import requests
    
    url = "find the url above"
    
    req = requests.get(url)
    sauce = BeautifulSoup(req.text,"lxml")
    
    data = []
    for items in sauce.select_one("table[width='610']").select("tr"):
        for item in items.select("td"):
            if "Raison" in item.text:
                raison = item.find_next_sibling().get_text(strip=True)
                data.append(raison)
    
        email = [item.text for item in items.select("a[href^='mailto:']")]
        data.append(email)
    
    print(data)
    

1 个答案:

答案 0 :(得分:1)

尝试以下代码行以获得所需的输出:

items = sauce.select_one("table[width='610']").select("tr")
raison, email = [item.select("td")[-1].text.strip() for item in items if item.select("a[href^='mailto:']") or "Raison" in item.text]

print(raison, email)