百战程序员分享:关于网页爬虫的自我尝试

关于网页爬虫的自我尝试,还是因为在大数据时代对所需数据的追求,数据对我们来说就是一笔宝贵的财富,以机器翻译来说,第一步呢需要收集目前大量的中英文翻译的原句子,而这些句子我们应该去哪里得到呢?最简单、最直接、最有效、最现成的办法就是去爬取。由于之前没有做过类似的东西,所以打算使用强悍的python辅助我。

首先我们发现,这一页并没有我们直接需要的中英文的素材,而是点击了导航栏上了各大分类,再进入具体的分类页后,再次点击具体的内容,才会有中英文互译的文章,我们的爬取思路如下:

思路:首页先得到进入各个分类的页面的url,其次在分类页面爬取出当前页面所有文章的url,最后进入文章获得中英文素材。我们需要查看一下网页的源代码,将导航栏处的源代码找到,提取看它是否有什么特征。那么接下来要做的就是解析html了。尚学堂•百战程序员陈老师指出,python解析html有现成的BeautifulSoup库比较强大,所以第一步安装这个强大的库,这里我的python版本是2.7,进入python的安装目录后,使用pip进行安装:

学习了一些简单的api用法之后,直接开始上手实践:

#print soup.title 找到title的标签,例如标题内容

#print soup.title.string 将title标签中的内容输出,例如“标题内容”

#print soup.p 输出所有p标签的第一个,如果想找所有的,使用find_all(‘p‘)

#print soup.find(id="search_button") 找到id是指定id的标签

#print soup.get_text().encode(‘utf-8‘) 得到所有内容

第一步实现的代码如下:

可以看到各个分类的ur已经被我们轻松的拿下了,接下来我们再爬取各个分类url下的文章的url,使用到的代码如下:

其实这样的爬取根本不够,因为每个分类我只是抓取了第一页的文章链接,而我需要的是把整个站点的所有内容全部抓取下来,因此每个需要都需要翻页去抓取,翻页的个数不确定,因此只能设置一个阈值,然后去试,直到出现了404页面。当然整个翻译的过程中还需要去重一些url,即使用这样的方式还是会存在一些重复的url。

关于网页爬虫的自我尝试,当然在这过程中也踩了不少坑,这里列举几个:

问题一:在notepad++中打开抓取的韩文内容显示乱码,但是windows记事本可以显示,最终查明是notepad++使用的字体中没有韩文的库。

问题二:抓取某些网站时候,抓取下来乱码,这里需要指定BeautifulSoup(resault, "html.parser", from_encoding=‘UTF-8‘)的第三个参数与指定网页的编码格式一样即可

问题三:在构造url的时候,有时候带着中文上去,Url会帮你把转化为( ‘你好‘转为‘%E4%BD%A0%E5%A5%BD‘),有时候需要手动把中文转为这样的格式,在python中使用urllib.quote(keyword)来进行,相反%字符转中文使用unquote。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419A0K85C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券