Python 3.x 用于循环和获取文本和Href的beautifulsoup

Python 3.x 用于循环和获取文本和Href的beautifulsoup,python-3.x,beautifulsoup,python-requests,lxml,Python 3.x,Beautifulsoup,Python Requests,Lxml,我在这里有点紧张: 这是一个ASP站点,我正试图从中获取数据,它非常混乱: 我试图使用for循环来获取href和站点上第四个表中所有行的文本,因此我首先做了: table = soup.findAll('table')[3] 然后从这个表中,我需要获取标记和的href中的所有文本 4342141 25.07.2018 09:00 安卡拉 - 科尼亚 4134123 26.07.2018 09:00 厢式货车 - 伊斯坦布尔 您可以直接获取所有tr标记,而不是从表中的tbody中提取文本。 根据

我在这里有点紧张:

这是一个ASP站点,我正试图从中获取数据,它非常混乱:

我试图使用
for
循环来获取
href
和站点上第四个表中所有行的文本,因此我首先做了:

table = soup.findAll('table')[3]
然后从这个表中,我需要获取
标记和
href
中的所有文本 4342141 25.07.2018 09:00 安卡拉 - 科尼亚 4134123 26.07.2018 09:00 厢式货车 - 伊斯坦布尔
您可以直接获取所有tr标记,而不是从表中的tbody中提取文本。 根据您的代码段,您可以参考此代码段从表中提取数据

soup = BeautifulSoup(text, 'html.parser')
all_products = []
for tr in soup.find_all('tr'):
    text = tr.get_text(separator=' ', strip=True)
    if text:
        a_tag = tr.find('a')
        if a_tag:
            product_link = a_tag.attrs['href']
            all_text = text + ' ' + product_link
            all_products.append(all_text.split(' '))

print(all_products)
输出为:

[['4342141', '25.07.2018', '09:00', 'Ankara', '-', 'Konya', 'free.asp?detail=hide&c_id=4342141'], ['4134123', '26.07.2018', '09:00', 'Van', '-', 'Istanbul', 'free.asp?detail=hide&c_id=4134123']]
['4342141','25.07.2018','09:00','Ankara','-','Konya','free.asp?detail=hide&c_id=4342141'],['4134123','26.07.2018','09:00','Van','-','Istanbul','free.asp?detail=hide&c_id=4134123']您能显示产品的打印件吗?您的HTML文档看起来像什么?请编辑您的问题,如果没有示例HTML/URL,我们无法在这里为您提供太多帮助。您错过了循环块的
缩进。表中是否有“tbody”元素?您的HTML中缺少它。没有它,您的代码将不会打印任何内容。我得到的输出是:文件“C:\Users\yasir\Documents\Web Scraping\araba.py”,第41行,在product\u link=a\u tag.attrs['href']AttributeError:'NoType'对象没有属性“attrs”[在1.8s中完成]
soup = BeautifulSoup(text, 'html.parser')
all_products = []
for tr in soup.find_all('tr'):
    text = tr.get_text(separator=' ', strip=True)
    if text:
        a_tag = tr.find('a')
        if a_tag:
            product_link = a_tag.attrs['href']
            all_text = text + ' ' + product_link
            all_products.append(all_text.split(' '))

print(all_products)
[['4342141', '25.07.2018', '09:00', 'Ankara', '-', 'Konya', 'free.asp?detail=hide&c_id=4342141'], ['4134123', '26.07.2018', '09:00', 'Van', '-', 'Istanbul', 'free.asp?detail=hide&c_id=4134123']]