前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【爬虫】(一)fossies.org

【爬虫】(一)fossies.org

作者头像
sidiot
发布2023-08-31 13:35:00
1430
发布2023-08-31 13:35:00
举报
文章被收录于专栏:技术大杂烩

前言

因为毕设是基于机器学习的,所以需要大量的样本来训练模型和检验成果,因此,通过爬虫,在合法合规的情况下,爬取自己所需要的资源,在此进行记录;

本次爬取的网站是 fossies.org/windows/mis…

总的代码都会在 运行 中贴出...

再次申明:本博文仅供学习使用,请勿他用!!!

效果

image.png
image.png
image.png
image.png

观察

进入网站,看到的是比较简洁的首页:

image.png
image.png

随便点进去一个,进一步观察一下情况,发现点击之后可以直接下载,是相对比较简单的网站了

image.png
image.png

那接下来就是开始动手写脚本了;  

分析

1、先请求一下,看看是否能行;

代码语言:javascript
复制
import requests

url = 'https://fossies.org/windows/misc/'
print(requests.get(url).status_code)

# 200

2、请求成功之后我们接着下一步,在浏览器中 F12 查看网页元素,观察规律;

image.png
image.png

3、这里可以通过 DOM 进行查找,也可以通过 XPATH,也可以正则,全凭个人喜好,先筛选出每个 <tr>

代码语言:javascript
复制
import requests
from lxml import etree

url = 'https://fossies.org/windows/misc/'
html = etree.HTML(requests.get(url).text)
trs = html.xpath('//*[@id="archlist"]/table/tr')
代码语言:javascript
复制
[<Element tr at 0x7fa3663fcf40>, <Element tr at 0x7fa3663fc480>, ..., <Element tr at 0x7fa365d73180>]

注意,这里有个很坑爹的地方,浏览器上看到的网页内容有部分是通过 JS 动态渲染过的,因此 requests 时是没有的,比如说 tbody

4、接下来就是从单个 <tr> 里去获取到 <a> 标签的属性了,因为 href 和文件的名字是一样的,因此只要获取一个就行;

代码语言:javascript
复制
for tr in trs:
    href = tr.xpath('td/a')[0].get('href')
代码语言:javascript
复制
WinSCP-5.21.3-Portable.zip
WinSCP-5.21.3-Setup.exe
WinSCP-5.21.3-Source.zip
neo4j-community-4.4.11-windows.zip
WiresharkPortable64_3.6.8.paf.exe
Wireshark-win64-3.6.8.exe

...

pdftk_free-2.02-win-setup.exe
FreeMat-4.2-Setup.exe
md5.zip
dia-setup-0.97.2-2-unsigned.exe
unz600dn.zip
unz600xn.exe
zip300xn.zip
zip300xn-x64.zip

5、可以看到,文件的地址就是前缀加上刚刚获取到的 href,因此直接拼接 url 进行下载;

image.png
image.png
代码语言:javascript
复制
down_urls = []

for tr in trs:
    href = tr.xpath('td/a')[0].get('href')
    down_urls.append(url+href)

运行

可以自行加上日志,进度条等,也可以使用协程,线程,进程来提升速度,以下是全部代码:

国外的网站,不用代理就挺慢的;

这板块现在有版权风险,不能贴全部的代码,点这里

后记

仅仅用来记录毕设期间所爬过的网站;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 效果
  • 观察
  • 分析
  • 运行
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档