爬虫和存储过程中遇到的问题

昨天写了个爬虫程序,中间遇到了各种可能遇到的问题,现在将问题写下来,希望以后不再2犯同样的错误。

这一个代码块用于读取txt文件,并将其转换成列表,文件中存储的为url。但在实际转换为列表之后再输出,发现多了一个"\n",因此导致输出的url错误,对此,可在实际爬取url时候,将“\n”去掉。

def read_txt():
    f = open('url.txt') #打开存储的txt文件
    url_list = list(f)  #将文件转换成列表
    # print(url_list)
    return url_list

这段代码用于获取网页的信息,其中存在的问题在于xpath提取的问题,这个页面的标签又两层,导致爬取的时候重复取到了内容,内容重复了两次,合适的解决方法是向上再找几个标签,并且利用标签的id属性,id是唯一的,而class属性并不唯一,解决了重复取值的问题。

def get_page(url_list):
    for i in range(len(url_list)):
        print("正在爬取第"+str(i)+"条数据")  #输出正在读取第几条数据
        url = url_list[i].replace('\n','')  #获取每一个url,并将尾部的'\n'替换掉
        print(url)
        save_list = [] #用于存储需要保存的信息
        page = requests.get(url, headers=headers) #读取页面
        page.encoding = 'utf-8'  
        page = page.text  
        tree = etree.HTML(str(page)) 
        result = tree.xpath('//div[@id="full-view-heading"]/div[@class="article-citation"]/div[@class="article-source"]//text()')#xpath语句用于提取相应的内容

在将数据存储到本地文件中也出现了一些问题,我发现实际存储的数量少于url数量,经过分析,原来是url有重复的,我采用的字典来保存key为url,,值为爬取的信息,使得自动去掉了重复值,因此我改成列表存储信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值