使用get函数无法获取相对应的标签

# -*- coding: utf-8 -*-
import requests
import pandas as pd
from bs4 import BeautifulSoup
import re
import json
#import cx_Oracle
from sqlalchemy import create_engine
import sys

url = 'http://www.sac.net.cn/hyfw/hydt/'
for i in range(1):
    if i ==0:
        url1='http://www.sac.net.cn/hyfw/hydt/index.html'
    else:
        url1=url+'index_'+str(i)+'.html'
    print url1
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    directory = {'User-Agent': user_agent}
    response = requests.get(url1, headers=directory)
    # 告诉他这段文本是以utf8方式编码 所以要以utf8方式解码
    response.encoding = 'utf-8'
    bs = BeautifulSoup(response.text, 'html.parser')
    title = bs.find('title').string[5:12]
    print title
    print url[0:21]
    table = bs.find_all('table')
    for a in table:
        b = a.find_all('td', attrs={'class': 'pad_le30 hei_000'})
        #print b
        for c in b:
            print c.find_all('a')
            #print d
          #print type(d)
          #print d.get('href')
          #print d.attrs.get('href')

今天在使用爬虫爬取网页时,一直抓取不出想要的链接。

原网页的源代码是

然后我就想使用 .get('href')来取出想要的a标签中的连接,结果一直输出的都是None.

在询问过一些身边比较厉害的朋友后,说是双重循环双重列表所以取不出来。


接着我输出d的结果是没有问题的,那么问题究竟是什么原因呢?


最后才明白,原来findall返回的是list,list没有href。于是就把原来的print d.get('href')改成print d[0].get('href')然后运行,就成功了。不过输出的连接很奇怪。

这个是链接是缺省的url,对于这些缺省的url,前面的是当前url的域名,也就是当前url域名+缺省url就是真实的url



再回过头来print d  和 print d[0],我们很明显就能看到一个输出的是列表,带有[]。后者输出的则是列表中的第一个元素。这样我们才能从标签中取出想要的href属性。还可以使用.string来获取中文哦!



猜你喜欢

转载自blog.csdn.net/weixin_41931602/article/details/80160649