python实现80s爬虫+xunsearch使用

背景:

最近学习python,正好看到GitHub上有一个开源项目,一个百度云资源爬虫,感觉挺有意思就打算模仿一下,但是发现,好像现在百度云资源已经很难爬取了,于是就打算自己爬一个电影资源网站。

项目大体框架:

  1. 爬虫(数据库用的是mysql)
  2. xunsearch(一个开源的搜索引擎解决方案)
  3. 网页部分
  4. 数据统计

效果展示:
搜索展示
(忽略那个百度的图标,原谅一个工科男做不出好看的logo,只好借用一下啦,百度大大原谅我)
这里写图片描述
由于精力有限,很多想要的功能没有实现,只实现了基本的搜索功能。

**

下面具体介绍下每个部分:

**

1.爬虫
爬虫我用的是最简单的requests与beautifulsoup这两个库:
beautifulsoup文档
requests文档
其他库:
MySQLDb
mutiprocessing

下面我会提到爬虫经常用到的几个知识点:应对反爬虫、多线程爬虫、断点续爬、动态网页的爬取
爬虫我改了很多次,因为对方的管理人员反爬虫做的还是很不错的,总是出问题,一点奉献精神都没有
难过
一开始也是我太天真了,没有做任何安全措施就直接裸奔着开着多个线程就开始干了,没想到爬到一千多条资源的时候就挂掉了,但是还好管理员手下留情没有封我ip,于是我做了简单反反爬虫,每爬10条数据就time.sleep(5),但是貌似还是总是会断开,我觉得会不会是管理员对我的ip做了什么限制,于是我就开始打代理的主意,说干就干,上
西刺代理爬了1600多个ip,贴上代码

#! /usr/bin/env python
#-*-coding:utf-8 -*-
#import MySQLdb
#import re
import requests
from bs4 import BeautifulSoup
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
    'Referrer':'http://www.dytt8.net/'
}
proxies_tmp = []
proxies = []
filehandle = open('G:/ip_pool/ip.txt','w')
print '开始自动获取代理。。。'
for page in range(1,31):
    url = 'http://www.xicidaili.com/nn/{}'.format(str(page))
    web_data = requests.get(url,timeout=0.1,headers=headers)
    soup = BeautifulSoup(web_data.text,'html.parser')
    ips = soup.select('tr')
    for ip in ips:
        tds = ip.find_all('td')
        if len(tds)>0:
            proxies_dict = {tds[5].string:tds[5].string+'://'+tds[1].string+':'+tds[2].string}
            #proxies_tmp.append(tds[5].string+'://'+tds[1].string+':'+tds[2].string)
            proxies_tmp.append(proxies_dict)
    print proxies_tmp
    #test_url = 'http://www.dytt8.net/'
    test_url = 'http://www.ygdy8.net'
    for ip in proxies_tmp:
        #ip = ip.encode('utf-8')
        r = requests.get(test_url,proxies=ip)
        print r.status_code
        print ip
        filehandle.write(str(ip)+',\n')
        proxies.append(ip)
filehandle.close()
print proxies
print '代理获取完毕!'

代码注释不完整,见谅
下面是我的ip池:
ip池
然后我又改变了一下策略,每爬四页就time.sleep(random.randint(1,3))
然后同时换一个ip,这样就避免了代理ip被封,为了以防万一,我也加上了请求头:
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36’
}
这样就更加逼真了吧
哇咔咔
然而事实证明我还是太嫩了,爬虫还是会断,而且断了又需要从头开始爬取,那么我的数据库里的数据就只有全部删除,真的是让人头痛。看来断点续爬这个功能的实现迫在眉睫。
先来看下网站大概的结构:
80s

就是一个主页面列出了所有的电影,然后点进去就是每部电影的详情页,所以我们就可以先把所有电影的链接先爬下来存在一个数据库里(links)
数据库结构:
数据库结构
爬完了过后,links1数据库的部分内容
links1
tag是最重要的一个字段,tag是一个标志,如果爬过了的链接我就置该链接的tag为1,否则tag为0,下次我爬取数据时就会从这个数据表里提取link,所以这就实现了断点续爬,并且不会重复爬取。
这么一来就再也不担心爬虫挂了(发挥一下脑洞,可以实现断了然后重启爬虫继续爬,全自动化),现在不担心爬虫被封了,就要考虑效率的问题了,有两个选择,一是自己多开几个爬虫,还有就是多线程爬虫,我选择了后者,这就会用到mutiprocessing这个库,
mutiprocessing使用实例

然后,爬虫终于可以愉快的跑起来了,一共爬了一万多条电影数据,下面是部分数据库数据:
movies
除了上面所提到的与反爬虫做斗争外,还有一处知识点,那就是爬取动态的页面,如图所示:
resource
我需要的格式是1024平板MP4,但是个框里的数据时异步加载过来的,所以就只有采用特殊方法了,这个站还算是挺简单的,直接f12大法抓下包看一看就找到了数据源。下面是分析过程:
network
谷歌浏览器f12打开开发者工具,选择network栏,刷新下就可以捕获到数据包,然后我们点击选择1024平板mp4栏,看看都加载了哪些包
net
那个bd-1就是我需要的数据包,我直接访问它,就可以看到数据了:

bd-1
然后我就直接抓取这个链接里的数据就行了。这就算解决了异步数据的获取。
数据都爬完了,我也就顺便统计分析了一下:
charts
数据可视化同样是使用的python实现的,用的是jupyter神器+charts这个库,charts就是python对highcharts的封装,写charts用法的博文比较少,我贴两篇篇还是不错的:
python charts库使用
jupyter+charts
xunsearch使用
xunsearch官方文档
xunsearch只能搭在linux上面,所以只有搭在我的虚拟机中,搭好后试一下在终端里使用下搜索功能,效果如下:
xun
是不是很炫酷?
蹦
还有更炫酷的,就是加上网页前端啦,这个时候就需要用到xunsearch的sdk了,调用一下就行了。

最后上一个爬虫图片压压惊
spider

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python股票数据爬虫分析可视化框架有很多选择,下面我会介绍其中几个比较流行的框架。 1. BeautifulSoup:BeautifulSoup是一个强大的HTML/XML解析库,可以用来爬取网页上的股票数据。它提供了简单的API来遍历和搜索HTML/XML文档树,使得爬取股票数据变得相对简单。虽然BeautifulSoup本身并不提供数据分析和可视化的功能,但可以结合其他Python库,如Pandas和Matplotlib等进行进一步的数据分析和可视化。 2. Scrapy:Scrapy是一个功能强大的Python爬虫框架,它提供了丰富的特性和工具,使得构建复杂的爬虫变得简单。使用Scrapy可以方便地定义爬虫的规则和流程,通过XPath或CSS选择器等方式抓取股票数据。类似于BeautifulSoup,Scrapy本身并不提供数据分析和可视化功能,但可以结合其他库进行进一步的分析和可视化。 3. Pandas:Pandas是一个用于数据处理和分析的库,它提供了高效的数据结构和数据分析工具。可以使用Pandas读取和处理从网页爬取得到的股票数据,进行数据清洗、转换和分析。Pandas还集成了Matplotlib和Seaborn等可视化库,可以用来绘制各种类型的图表和可视化结果。 4. Matplotlib:Matplotlib是一个用于绘制2D图表和可视化数据的库。在股票数据分析中,可以使用Matplotlib来绘制股票走势图、K线图、柱状图等各种图表,直观地展示股票数据的变化情况。 总而言之,以上是几个常用的Python股票数据爬虫分析可视化框架。根据具体的需求和个人偏好,选择适合自己的框架进行开发和使用。这些框架在数据爬取、处理、分析和可视化方面都具有优势,可以帮助我们更好地理解和分析股票数据。 ### 回答2: Python股票数据爬虫、分析和可视化是金融领域中常见的应用之一。在这个过程中,我们使用Python编程语言以及相关的库和框架来从互联网上获取股票数据,对数据进行分析,并将结果可视化展示出来。 首先,我们需要使用Python中的爬虫工具来从网站上爬取股票数据。常用的爬虫库包括Requests和BeautifulSoup。使用这些库,我们可以向股票数据提供网站发送HTTP请求,并根据网站的HTML结构提取所需的数据。 然后,我们可以使用Python中的数据分析库如Pandas、NumPy和SciPy来对股票数据进行处理和分析。这些库提供了灵活强大的数据结构和函数,可以进行数据清洗、数据计算以及统计分析等操作。我们可以使用这些库来计算股票的收益率、波动性、相关性等指标,从而帮助我们更好地理解股票市场的情况。 最后,我们可以使用Python中的可视化库如Matplotlib和Seaborn来将分析结果呈现出来。这些库提供了各种绘图函数和样式,可以绘制折线图、柱状图、散点图等不同类型的图表。通过可视化,我们可以更直观地观察和分析股票数据的趋势和变化,帮助我们做出更明智的投资决策。 总而言之,Python股票数据爬虫、分析和可视化框架给予我们在金融领域中研究和应用股票数据的能力。通过这个框架,我们可以轻松地从互联网上获取股票数据,对数据进行分析,并通过可视化展示出来,从而更好地理解和利用股票市场的信息。 ### 回答3: 对于股票数据的爬虫、分析和可视化处理,Python提供了多个强大的框架。以下是其中几个常用的框架和库: 1. BeautifulSoup:用于从网页中提取数据的库。通过解析HTML文档,可以方便地提取股票数据。 2. Scrapy:一个高效的网络爬虫框架,适用于大规模的数据爬取。可以用于爬取多个股票网站的数据。 3. Pandas:一个流行的数据处理和分析库。可以使用Pandas加载股票数据并进行数据清洗、分析、转换和计算。 4. NumPy:一个用于科学计算的库。在股票数据分析中,NumPy提供了针对数组和矩阵运算的丰富功能。 5. Matplotlib:一个绘图库,用于生成各种类型的图形。可以使用Matplotlib创建股票历史价格趋势图、K线图等可视化结果。 6. Seaborn:基于Matplotlib的库,用于创建更美观的统计图表。Seaborn可以用于创建股票收益率分布图、相关性矩阵等。 7. Plotly:一个交互式的可视化库,可以创建基于Web的动态图表。通过Plotly,可以创建可交互的股票走势图和K线图等。 使用这些框架和库,可以通过Python实现全流程的股票数据爬取、分析和可视化处理。首先,使用爬虫框架(如BeautifulSoup或Scrapy)爬取股票数据;然后,使用Pandas和NumPy进行数据处理和分析;最后,使用Matplotlib、Seaborn或Plotly将分析结果可视化呈现。这样,可以得到直观、清晰的图表,帮助用户更好地理解股票数据的变化和趋势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值