如何用Python爬取数据(如何用python抓取股票数据)_理财技巧_景合财经知识网_景合财经景合财经

景合财经
景合财经知识网站

如何用Python爬取数据(如何用python抓取股票数据)

内容导航:


一、如何用python抓取股票数据

很多服务器通过浏览器发给它的报头来确认是否是人类用户,所以我们可以通过模仿浏览器的行为构造请求报头给服务器发送请求。

服务器会识别其中的一些参数来识别你是否是人类用户,很多网站都会识别User-Agent这个参数,所以请求头最好带上。

有一些警觉性比较高的网站可能还会通过其他参数识别,比如通过Accept-Language来辨别你是否是人类用户,一些有防盗链功能的网站还得带上referer这个参数等等。


二、如何用Python爬取数据

方法/步骤

  • 在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx。

    如何python爬取股票数据

    请点击输入图片描述

  • 然后在python的编辑器中输入import选项,提供这两个库的服务

    如何python爬取股票数据

    请点击输入图片描述

  • urllib主要负责抓取网页的数据,单纯的抓取网页数据其实很简单,输入如图所示的命令,后面带链接即可。

    如何python爬取股票数据

    请点击输入图片描述

  • 抓取下来了,还不算,必须要进行读取,否则无效。

    如何python爬取股票数据

    请点击输入图片描述

  • 5

    接下来就是抓码了,不转码是完成不了保存的,将读取的函数read转码。

    再随便标记一个比如XA。

    如何python爬取股票数据

    请点击输入图片描述

  • 6

    最后再输入三句,第一句的意思是新建一个空白的word文档。

    第二句的意思是在文档中添加正文段落,将变量XA抓取下来的东西导进去。

    第三句的意思是保存文档docx,名字在括号里面。

    如何python爬取股票数据

    请点击输入图片描述

  • 7

    这个爬下来的是源代码,如果还需要筛选的话需要自己去添加各种正则表达式。


三、如何利用python爬虫获取数据

python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写。

python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。

python和其他脚本语言如java、R、Perl一样,都可以直接在命令行里运行脚本程序。

工具/原料python;CMD命令行;windows操作系统方法/步骤1、首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。

2、打开文本编辑器,推荐editplus,notepad等,将文件保存成.py格式,editplus和notepad支持识别python语法。

脚本第一行一定要写上#!usr/bin/python表示该脚本文件是可执行python脚本如果python目录不在usr/bin目录下,则替换成当前python执行程序的目录。

3、编写完脚本之后注意调试、可以直接用editplus调试。

调试方法可自行百度。

脚本写完之后,打开CMD命令行,前提是python已经被加入到环境变量中,如果没有加入到环境变量,请百度4、在CMD命令行中,输入“python”+“空格”,即”python“;将已经写好的脚本文件拖拽到当前光标位置,然后敲回车运行即可。


四、怎么用python爬取相关数据

以下代码运行通过:

import requests

from bs4 import BeautifulSoup

import os

headers = {

'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) "

"Chrome/22.0.1207.1 Safari/537.1"}

## 浏览器请求头(大部分网站没有这个请求头会报错)

all_url = 'http://www.mzitu.com/all'

start_html = requests.get(all_url, headers=headers)

## 使用 requests 中的 get 方法来获取 all_url 的内容 headers 为请求头

print(start_html.text)

## 打印 start_html

## concent 是二进制的数据,下载图片、视频、音频、等多媒体内容时使用 concent

## 打印网页内容时使用 text

运行效果:

如何python爬取股票数据


五、python可以爬取什么数据

一、爬取我们所需要的一线链接

channel_extract.py

这里的一线链接也就是我们所说的大类链接:

from bs4 import BeautifulSoupimport requests

start_url = 'http://lz.ganji.com/wu/'host_url = 'http://lz.ganji.com/'def get_channel_urls(url):

wb_data = requests.get(url)

soup = BeautifulSoup(wb_data.text, 'lxml')

links = soup.select('.fenlei > dt > a') #print(links)

for link in links:

page_url = host_url + link.get('href')

print(page_url)#get_channel_urls(start_url)channel_urls = '''

http://lz.ganji.com/jiaju/

http://lz.ganji.com/rirongbaihuo/

http://lz.ganji.com/shouji/

http://lz.ganji.com/bangong/

http://lz.ganji.com/nongyongpin/

http://lz.ganji.com/jiadian/

http://lz.ganji.com/ershoubijibendiannao/

http://lz.ganji.com/ruanjiantushu/

http://lz.ganji.com/yingyouyunfu/

http://lz.ganji.com/diannao/

http://lz.ganji.com/xianzhilipin/

http://lz.ganji.com/fushixiaobaxuemao/

http://lz.ganji.com/meironghuazhuang/

http://lz.ganji.com/shuma/

http://lz.ganji.com/laonianyongpin/

http://lz.ganji.com/xuniwupin/

'''123456789101112131415161718192021222324252627282930313233343536

那么拿我爬取的58同城为例就是爬取了二手市场所有品类的链接,也就是我说的大类链接;

找到这些链接的共同特征,用函数将其输出,并作为多行文本储存起来。

二、获取我们所需要的详情页面的链接和详情信息

page_parsing.py

1、说说我们的数据库:

先看代码:

#引入库文件from bs4 import BeautifulSoupimport requestsimport pymongo #python操作MongoDB的库import reimport time#链接和建立数据库client = pymongo.MongoClient('localhost', 27017)

ceshi = client['ceshi'] #建ceshi数据库ganji_url_list = ceshi['ganji_url_list'] #建立表文件ganji_url_info = ceshi['ganji_url_info']123456789101112

2、判断页面结构是否和我们想要的页面结构相匹配,比如有时候会有404页面;

3、从页面中提取我们想要的链接,也就是每个详情页面的链接;

这里我们要说的是一个方法就是:

item_link = link.get('href').split('?')[0]12

这里的这个link什么类型的,这个get方法又是什么鬼?

后来我发现了这个类型是

1

如果我们想要单独获取某个属性,可以这样,例如我们获取它的 class 叫什么

print soup.p['class']

#['title']12

还可以这样,利用get方法,传入属性的名称,二者是等价的

print soup.p.get('class')#['title']12

下面我来贴上代码:

#爬取所有商品的详情页面链接:def get_type_links(channel, num):

list_view = '{0}o{1}/'.format(channel, str(num)) #print(list_view)

wb_data = requests.get(list_view)

soup = BeautifulSoup(wb_data.text, 'lxml')

linkOn = soup.select('.pageBox') #判断是否为我们所需页面的标志;

#如果爬下来的select链接为这样:div.pageBox > ul > li:nth-child(1) > a > span 这里的:nth-child(1)要删掉

#print(linkOn)

if linkOn:

link = soup.select('.zz > .zz-til > a')

link_2 = soup.select('.js-item > a')

link = link + link_2 #print(len(link))

for linkc in link:

linkc = linkc.get('href')

ganji_url_list.insert_one({'url': linkc})

print(linkc) else: pass1234567891011121314151617181920

4、爬取详情页中我们所需要的信息

我来贴一段代码:

#爬取赶集网详情页链接:def get_url_info_ganji(url):

time.sleep(1)

wb_data = requests.get(url)

soup = BeautifulSoup(wb_data.text, 'lxml') try:

title = soup.select('head > title')[0].text

timec = soup.select('.pr-5')[0].text.strip()

type = soup.select('.det-infor > li > span > a')[0].text

price = soup.select('.det-infor > li > i')[0].text

place = soup.select('.det-infor > li > a')[1:]

placeb = [] for placec in place:

placeb.append(placec.text)

tag = soup.select('.second-dt-bewrite > ul > li')[0].text

tag = ''.join(tag.split()) #print(time.split())

data = { 'url' : url, 'title' : title, 'time' : timec.split(), 'type' : type, 'price' : price, 'place' : placeb, 'new' : tag

}

ganji_url_info.insert_one(data) #向数据库中插入一条数据;

print(data) except IndexError: pass123456789101112131415161718192021222324252627282930

四、我们的主函数怎么写?

main.py

看代码:

#先从别的文件中引入函数和数据:from multiprocessing import Poolfrom page_parsing import get_type_links,get_url_info_ganji,ganji_url_listfrom channel_extract import channel_urls#爬取所有链接的函数:def get_all_links_from(channel):

for i in range(1,100):

get_type_links(channel,i)#后执行这个函数用来爬取所有详情页的文件:if __name__ == '__main__':# pool = Pool()# # pool = Pool()# pool.map(get_url_info_ganji, [url['url'] for url in ganji_url_list.find()])# pool.close()# pool.join()#先执行下面的这个函数,用来爬取所有的链接:if __name__ == '__main__':

pool = Pool()

pool = Pool()

pool.map(get_all_links_from,channel_urls.split())

pool.close()

pool.join()1234567891011121314151617181920212223242526

五、计数程序

count.py

用来显示爬取数据的数目;

import timefrom page_parsing import ganji_url_list,ganji_url_infowhile True: # print(ganji_url_list.find().count())

# time.sleep(5)

print(ganji_url_info.find().count())

time.sleep(5)

家电维修,空调维修,智能锁维修全国报修号码分享:可以直接拔打400-968-1665 全国各大城市均设网点。
赞(0) 打赏
欢迎转载分享:景合财经 » 如何用Python爬取数据(如何用python抓取股票数据)
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

-景合财经

在线报修网点查询