147

如何使用Excel制作一个简单的爬虫? - 知乎专栏

 6 years ago
source link: https://zhuanlan.zhihu.com/p/29848868
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何使用Excel制作一个简单的爬虫?

所有回答均为干货

因为前些日子杀了一个程序员祭天, 导致程序员人手不足, 这不, 老衲让程序员们去校验当前数据的可靠性, 就被程序员一把怼回来:"时间紧任务急, 你要是不想影响排期, 就自己干吧~"

我去! 敢这么和产品经理说话!

老衲赶紧给程序员买个外卖盒饭压压惊.

v2-e0929b080dc9c104c03088d2ad4c572b_720w.jpg

当前面临的局面是, 手里有几万条记录. 主要是旅游线路的信息. 但是有一些已经无效或者下架了. 我们需要知道这些已经无法售卖的线路, 在总数中的比例.

方案1:

随便抽几百条, 然后每个链接点一下, 看一眼, 然后做个记录, 最后统一汇总一下就好啦.

嗯, 可行性很高. 先走这条路试试.

按下三星自杀式秒表. 双记一下单元格, 让url变成真正可点击的超链接. 点一下, 等5秒, 哦哦, 该线路目前正常, 在表格里面写个1表示正常(写0表示不正常), 看一下秒表, 总耗时25秒.

抽200条 = 5000秒. 加上休息的时间, 四舍五入就是7200秒. 很好, 两个小时而已.

老衲当然是否决啦! 两个小时就搞这么200条数据. 猪才会干.

方案2:

随便抽几百条, 然后让爬虫把基本信息爬回来, 然后用筛选或过滤, 一次性统计出badcase占比.

嗯, 爬虫怎么搞? 喂, 老贾, 你的爬虫系统借我用用~~ ( 老贾: 你有机器吗? 你有权限吗? 你会使用这个beautiful Soup框架吗? )

......沉思1分钟...................沉思3分钟.....................沉思10分钟......................睡30分钟...............

小样儿, 无非是欺负老衲硬盘空间小, 装不上开发环境嘛. 但老衲手里还有Excel呀.

这个玩意儿不就是个现成的爬虫么?

来一行试试:

果然可以, 那就开工吧! (顺道擦擦睡觉时的口水)

  1. 先把数据简单整理一下, 起码汇成表格. 表格就随便起个名字吧, 叫"TableLvmamaSet"

2. 打开"开发工具", 不会打开的请看老衲之前的相关Excel教程.

3. 插入一个模块

4. 写代码咯~~~~~不难 ,真的不骗你, 超简单的. 磕两只小龙虾就写好了.

Sub crawler()


Dim URL As String
Dim RowNum As Integer
Dim UrlList As Range
Dim DestiArea As Range

'先打开原始文件所在的文件, 获取源数据中的URL
Windows("驴妈妈商品抽样.xlsx").Activate
Range("TableLvmamaSet[url]").Select

'将获取到的URL列表暂存一下, 因为Excel很多操作会影响到"选择", 所以要暂存
Set UrlList = Selection

'再打开目标文件
Windows("工作簿1").Activate

'向目标文件写入
For Each Cell In UrlList
 
 '毎一条结果, 因为会有很多行, 所以只能每条结果独占一列
 URL = Cell.Text
 RowNum = Cell.Row
 Cells(1, RowNum).Value = URL
 
 Set DestiArea = Cells(2, RowNum)
 
    With ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, Destination:=DestiArea)
        .Name = URL
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

Next
End Sub

5. 跑起来, 喝杯咖啡, 20分钟后再看看~~

果然成功了. 每一列就是一个网页的内容. 的确有下架产品.

6. 然后使用一下查找工具

7. 于是:

大功告成. 代码留着, 下顿还可以继续用. 老衲要继续吃小龙虾去啦.

我们下期再见.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK