爬虫实例-----用requests框架和xpath爬取道琼斯指数信息并保存为csv文件

爬虫实例-----用requests框架和xpath爬取道琼斯指数信息并保存为csv文件

同类链接: 爬虫实例-----用scrapy框架和xpath爬取豆瓣多页面电影信息   里面有scrapy简略的介绍

import csv
import codecs
import requests
from lxml import etree

try:
    url = 'http://money.cnn.com/data/dow30'  # 要爬取的页面链接
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/'
                      '74.0.3729.169 Safari/537.36'    # 配置UA应对反爬
    }
    response = requests.get(url, headers=headers)    # 利用requests获取网页源码
    html = etree.HTML(response.text)    #etree.HTML():构造了一个XPath解析对象并对HTML文本进行自动修正。
    ls = html.xpath('//table[@class="wsod_dataTable wsod_dataTableBig"]//tr')   # 用xpath爬取页面table内所有信息目的是缩小范围,方便下面精确爬取信息
    print('len:', len(ls))    # 打印一下看是否成功获取信息,0 的话代表爬取失败
    file = codecs.open('./data/stock.csv', 'w', encoding='utf-8')   # 打开事先创建的csv文件并赋值给file
    if len(ls) > 0:
        ls.pop(0)   # 如果有信息删除第一行信息,因为第一行为名称,不需要
        wr = csv.writer(file)    # 将信息已csv的形式写入file中 即事先创建的stock.csv文件
        wr.writerow(['code', 'name', 'lasttrade'])   # 写入信息
        for stock in ls:
            code = stock.xpath("./td[1]/a/text()")[0]  # 从列表中提取第一项 text() 代表选取a标签内的文字信息
            name = stock.xpath("./td[1]/span/text()")[0]
            lasttrade = stock.xpath("./td[2]/span/text()")[0]

            print(code, name, lasttrade)
            wr.writerow([code, name, lasttrade])   # 写入信息

    file.close()  # 关闭文件

except Exception as e:
    print(e)

 

你可能感兴趣的:(爬虫实例-----用requests框架和xpath爬取道琼斯指数信息并保存为csv文件)