# 哪位能否分享一个自己写的简单点的python爬虫实例学习一下

**URL:** <https://forum.freemdict.com/t/topic/16081>\
**Category:** 资源求助\
**Created:** [2022 年10 月 8 日 14:21 UTC](https://forum.freemdict.com/t/topic/16081 "2022-10-08T14:21:53Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 8 日 14:21 UTC](https://forum.freemdict.com/t/topic/16081/1 "2022-10-08T14:21:53Z")

</div>

坛子里高手众多，希望不吝赐教，谢谢！

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 8 日 15:48 UTC](https://forum.freemdict.com/t/topic/16081/4 "2022-10-08T15:48:48Z")

</div>

想找个例子速成一下，谢谢各位的建议

---

<div class="post-metadata">

作者： ![Sunny1](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/c0e974/32.png) [@Sunny1](https://forum.freemdict.com/u/Sunny1)\
发布日期： [2022 年10 月 9 日 08:55 UTC](https://forum.freemdict.com/t/topic/16081/5 "2022-10-09T08:55:51Z")

</div>

这个贴子[谁愿意帮我爬一遍 WordReference](https://forum.freemdict.com/t/topic/6428) 的#33或#44有现成的例子  
爬的速度挺快的8线程，能不能速成就看你的了

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 9 日 09:02 UTC](https://forum.freemdict.com/t/topic/16081/6 "2022-10-09T09:02:36Z")

</div>

非常感谢，如果看明白了争取弄个详注版上来，方便有需求的随时修改。如果没看明白就没法子了

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 9 日 18:53 UTC](https://forum.freemdict.com/t/topic/16081/7 "2022-10-09T18:53:08Z")

</div>

把 @Sunny1 老兄推荐的这位前辈的一个爬虫程序仔细研究了一下，加了点注解把变量名按自己的习惯改复杂了

> [@谁愿意帮我爬一遍 WordReference](https://forum.freemdict.com/t/topic/6428/44):
>
> 发现用 wget 下载 WR 网页，会被重定向到 Yahoo 网站，这可能就是 WR 的反爬措施。改了代码，禁了重定向，你最后再运行一次吧。 [wg04-16.py](https://forum.freemdict.com/uploads/short-url/laIUPKONkbD9EJjPDDDgKIO3Q5N.py) (1.8 KB)

在我的VS中怎么跑都没问题，但是在Win下直接点击运行出现下面的屏幕，后来不知怎么又闪退，应该是中文注解引起的，请专家有空的话帮忙看下什么原因，谢谢！  
[wg04-16 (lurker)(#44)(annotated).py](https://forum.freemdict.com/uploads/short-url/rgoMan1m0j0L0DoA015c3oheiPK.py) (4.8 KB)  
又试了下原帖中的代码，结果一样的，VS中运行可以，直接在 Win下运行不行，从窗口提示看是跑到保存文件的步骤时闪退的。

 ![Image](https://forumcdn.freemdict.com/uploads/default/original/3X/4/4/446ea33e1634f40da1c88739fdde590cfb18774c.png)

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 10 日 03:14 UTC](https://forum.freemdict.com/t/topic/16081/9 "2022-10-10T03:14:39Z")

</div>

上面的注解文件中已经是加上了这行的。

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 10 日 03:47 UTC](https://forum.freemdict.com/t/topic/16081/10 "2022-10-10T03:47:32Z")

</div>

再重述一遍问题：

1. 原帖中的原始代码(wg04.py)和本帖中注解过的版本的效果没有差别

下面两种方式(2 和 3)不知道有什么区别：

1. 在 Windows File Explorer 中，用“打开方式”打开 wg04.py，运行1屏后就闪退  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/4/0/4070f8d5931e038bb99b2b0b4486e8633200e65c.png)

此种方式运行一个极简测试程序则是可行的  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/a/3/a3ce8cda1800df0f01937005857262cf892b86aa.png)  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/9/c/9c544ca95fff6c7c35c1185be39d3050cda3d49d.png)  
 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/f/3/f33f9336194cfccd57b7f29f7452f0e6e8a53155.png)

1. 在 Windows File Explorer 中，直接点击 wg04.py 可正常运行  
 ![Image](https://forumcdn.freemdict.com/uploads/default/original/3X/a/c/acb3b2bc5781300ad3eac2af7ba88a21cfc838ba.png)  
环境变量中已经添加过  
 ![Image](https://forumcdn.freemdict.com/uploads/default/original/3X/8/d/8d4b9c93e6798c19f9d89bc4a6fb12fe059aa896.png)

---

<div class="post-metadata">

作者： ![anon34331345](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@anon34331345](https://forum.freemdict.com/u/anon34331345)\
发布日期： [2022 年10 月 10 日 09:28 UTC](https://forum.freemdict.com/t/topic/16081/11 "2022-10-10T09:28:47Z")

</div>

两处小错误：

```auto
dc = dc.replace('\n', '')
# 应改成 dc = dc.replace('\n', ' ')

hr = urldefrag(urljoin(base, ah['href'])).url
# 应改成 hr = urldefrag(urljoin(url, ah['href'])).url

```

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 10 日 09:48 UTC](https://forum.freemdict.com/t/topic/16081/12 "2022-10-10T09:48:53Z")

</div>

> [@anon34331345](#):
>
> ```auto
> dc = dc.replace('\n', '')
> # 应改成 dc = dc.replace('\n', ' ')
> 
> ```

一般如果合并两段 `<div>...</div>`，是不是插一个空格似乎也无妨，不过插个空格是保险一点

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 10 日 10:04 UTC](https://forum.freemdict.com/t/topic/16081/13 "2022-10-10T10:04:41Z")

</div>

> [@anon34331345](#):
>
> ```auto
> hr = urldefrag(urljoin(base, ah['href'])).url
> # 应改成 hr = urldefrag(urljoin(url, ah['href'])).url
> 
> ```

好像效果是一样的，你能举一个反例吗？

 ![image](https://forumcdn.freemdict.com/uploads/default/original/3X/8/9/89dc5d30010523532c58b06a897c4ed5230851c2.png)

---

<div class="post-metadata">

作者： ![anon34331345](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@anon34331345](https://forum.freemdict.com/u/anon34331345)\
发布日期： [2022 年10 月 10 日 10:24 UTC](https://forum.freemdict.com/t/topic/16081/14 "2022-10-10T10:24:10Z")

</div>

在 Word Reference 网站应该找不出反例，但 urljoin() 的第一个参数最好是当前地址，这样处理相对地址时才不会出错。下面是一个极端反例：

```auto
base = 'https://www.wordreference.com/definition/'
url = 'https://www.wordreference.com/definition/abc/123'

result1 = urljoin(url, 'def')
# result1 = 'https://www.wordreference.com/definition/abc/def'

result2 = urljoin(base, 'def')
# result2 = 'https://www.wordreference.com/definition/def'

```

---

<div class="post-metadata">

作者： ![surfactant](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/dbc845/32.png) [@surfactant](https://forum.freemdict.com/u/surfactant)\
发布日期： [2022 年10 月 10 日 10:28 UTC](https://forum.freemdict.com/t/topic/16081/15 "2022-10-10T10:28:13Z")

</div>

刚才看了下文档，这几个函数设计得有点费解，还是自己用字符串操作处理一下得了 😀

---

<div class="post-metadata">

作者： ![zongze](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/ba8739/32.png) [@zongze](https://forum.freemdict.com/u/zongze)\
发布日期： [2022 年10 月 10 日 23:36 UTC](https://forum.freemdict.com/t/topic/16081/16 "2022-10-10T23:36:10Z")

</div>

b 大的遗泽这么香，不用吗?!

> **[OZv - Repositories](https://github.com/OZv?tab=repositories)**
>
> OZv has 13 repositories available. Follow their code on GitHub.

---

<div class="post-metadata">

作者： ![atauzki](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/atauzki/32/1365_2.png) [@atauzki](https://forum.freemdict.com/u/atauzki)\
发布日期： [2022 年10 月 10 日 23:44 UTC](https://forum.freemdict.com/t/topic/16081/17 "2022-10-10T23:44:37Z")

</div>

这个代码是python2的，就算用python2运行有些地方也要改
