excel网页数据抓取vba(我用脚本写一个给你啦用python网页网页书单(组图))

优采云 发布时间: 2021-09-17 21:12

  excel网页数据抓取vba(我用脚本写一个给你啦用python网页网页书单(组图))

  这两天他去朋友家玩。他说,他最近找了一份工作,需要帮助其他人整理网上书籍,他似乎有点麻烦。我想一下。好吧,我给你写一个剧本

  使用Python获取web图书列表1、并分析需求

  您需要捕获网页中的特定内容,特别是

  对于有限的平装书,需要书名、作者姓名、出版时间和售价。出版商从书名(如有)中引入ISBN代码

  这些内容必须存在于网页中,因此我们只需要使用[regular expression]来提取所需的内容

  然后,他将内容范围指定为

  关键词是音乐欣赏、艺术欣赏和艺术创作

  这个。。亚马逊似乎有很多参数。。。那么我不妨先在这里偷一个懒汉(怎么说,亲吻原则),然后在这里先记录他请求的网站

  音乐欣赏

  艺术欣赏

  艺术创作

  嗯,它们看起来都像

  2、设计功能

  我朋友的要求是把上面的数据整理成excel。对于这个函数,如果我在Internet上找到一个python封装的库,应该没有问题。为了便于使用,我们最好在这里支持交互式界面。为了方便起见,我们仍然计划把pyqt一号带出去

  那么一般功能是:

  3、具体实施

  让我们使用Python作为一个简单的脚本。这里,我们使用请求来删除数据,但请注意,Amazon实际上有一个保护机制。如果您轻率地使用get方法进行访问,Amazon将向您返回以下内容:

  1

2

3

4

  

  然后我试着假装头部,四处走动

  然后提取此页面中每本书对应的URL并观察当前页面。URL有一个特征词“a-link-normal s-access-detail-page a-text-normal”。然后,您可以使用该关键字使用正则表达式提取当前数据

  因为要在HREF中间提取内容,必须首先在***中指定内容,然后使用()返回需要的内容

  1

  pageDetail = r&#39;<a class="a-link-normal s-access-detail-page a-text-normal"[^>]*?href=\"([^>]*)\"[^>]*?>&#39;

  请注意,由于常规模式默认为贪婪模式,因此我们可以在***************************************************************之后添加“贪婪”?实现非贪婪模式查找

  找到网页后,记录当前的网站并依次访问

  然后我们需要根据需求获取内容

  经过测试,可以完成所需的功能~

  然后是Excel的操作。虽然我还没有见过VBA,但python已经在xlwt中编写了excel,所以下面是一个尝试:

  1

2

3

4

5

6

7

8

9

10

11

12

  import xlwt

# 创建 xls 文件对象

wb = xlwt.Workbook()

# 新增一个表单

sh = wb.add_sheet(&#x27;A Test Sheet&#x27;)

# 按位置添加数据

sh.write(0, 0, 1234.56)

sh.write(1, 0, 8888)

sh.write(2, 0, &#x27;hello&#x27;)

sh.write(2, 1, &#x27;world&#x27;)

# 保存文件

wb.save(&#x27;example.xls&#x27;)

  我在互联网上找到了这个演示,因此估计对应关系为

  |实际内容|操作对象|

  |Excel文件|工作簿

  |床单

  |单元格内容写入

  然后我们大致知道如何编写:创建一个excel并将数据放在指定的位置

  ----------=========------------

  有一种新的需求。您需要截图网站并将其保存到当前目录。这似乎是可以实现的。然后我发现了一件麻烦的事。。。这张照片一定涉及编码问题,但我似乎无法处理。。因为URL捕获的页面大小似乎不太正确。。。它可能是多张图片或其他东西。无论如何,照片的数量是错误的。。。所以我用了其他的想法,直接在网页上取了图片,就是Base64处理过的图片。。。。虽然它可能被压缩了,但应该仍然可以。。把这个拿下来处理。应该没问题

  4、特定应用

  正如这位同学提到的,他也想借此机会学习,他计划写一份依赖列表,以便能够快速安装

  安装pipreqs可以快速生成requirements.txt。但是,发现总是报告Unicode解码错误。人们认为这可能是由于windows的CMD编码问题,因此使用该参数强制指定编码为UTF-8:

  1

  pipreqs --encoding=utf-8 --use-local ./

  如果另一方需要快速安装相应的库,它只需要在当前目录中使用它

  pip install -r requirements.txt

  命令,可以快速安装相应的从属库

  后来,我记得有一个直观的界面,便于操作。。。好吧,搞砸了pyqt这个已经丢失了很长时间的简单例子:

  首先,使用QT设计器创建第一个

  

  然后使用pyuic5命令生成相应的。Py文件

  1

  pyuic5 -o ui_Dialog.py Dialog.ui

  最后,使用另一个程序收录此内容,并使用pyqt对其进行操作。为了避免程序运行时的干扰,采用qthread进行异步处理,增加了slot函数:

  1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

  class SpiderCrawl(QThread):

"""Lanch Spider"""

SignalFinishSpdier = pyqtSignal(bool)

def __init__(self, needs, parent=None):

super(SpiderCrawl, self).__init__(parent)

self.needs = needs

self.SignalFinishSpdier.connect(parent.spiderFinish)

def run(self):

""" it will return result of the spider

Ret: the result of spider

"""

result = amazonSpider.Spider(self.needs)

self.SignalFinishSpdier.emit(result)

class SpiderDialog(QDialog, ui_Dialog.Ui_Dialog):

...

@pyqtSlot(bool)

def spiderFinish(self, result):

""" the spider is finish"""

print("There!")

if result == True:

self.KeywordText.setText("爬虫已经完成任务")

else:

self.KeywordText.setText("你的url有问题...")

self.takeButton.setEnabled(True)

  最后,为了防止手工进入错误的网站。。。在这里也可以检测到它。如果在当前网页中找不到合适的URL,也会被视为输入错误

  最后,附上项目的网站:

  亚马逊蜘蛛V1.0

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线