python爬取并翻译_使用python爬取有道首页做一个翻译程序

今天想写一篇关于python爬虫的博文,正好这几天有几百个单词要翻译,而翻译软件我最常用的就是有道,去有道首页抓个包看一下,是http协议而且还是get请求这就好办了,使用时要注意是有道http://www.youdao.com/, 不是有道翻译,有道翻译采用的是post请求,这次我们使用有道首页,下面是我抓到的包分析的。

f4bbb49d80558555b8cf88976058dae7.png

箭头里标注的就是获取到的,由于是get请求,很简单,不需要其他什么参数,只看content里的内容即可。下面开始写python程序,既然发现是http协议,那我自己有urllib2库去抓就好,我使用的是python2.7,IDE为pycharm,下面是代码,分两段函数,不喜欢把所有代码写到一起,写成函数使用的时候直接调用就行,不需要到处找,到处注释掉。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#-*- coding=utf8 -*-

importurllib2

defget_html(url):#获取网页内容

result=urllib2.urlopen(url)

returnresult.read()

defsave_file(text,filename):#保存到文件

f=open(filename,'w')

f.write(text)

f.close()

if__name__=='__main__':

url='http://www.youdao.com/w/result/#keyfrom=dict2.top'

save_file(get_html(url),'thefile.txt')#将得到的网页直接存到文件里

然后到你这个执行的项目的文件夹下找thefile.txt这个文件,是执行的这个程序的文件夹里。打开可以看到果然获取了全部网页内容。

754f9abf198e0e0c37c6e8f743a659b0.png

但是我想做的是一个翻译程序,需要获取具体的意思,这时候就要用到正则表达式来提取关键内容了,现在开始分析我们所需要的其实就是下面这个框里的内容

4ec4ddf24786f25e29e6f4da73c52b7e.png

其实就在网页这里,包含在一个ul下面

922a9fbd77f8ab0b52355e2915bda442.png

…..写了一会完全提取不出来这对ul里的内容,网页里的ul太多,没有明显的特征,只好弃用正则表达式,用我的另外一个神器,BeautifulSoup库,简直就是万能的提取库。没有安装的可以去官网下载,安装方式参考我下面的这篇博文。

这是我提取出来的结果,直接就找到了,而且显示的还是中文,用正则表达式一般都会把中文给编码以后再显示,因为我们需要的ul是在第二个所,以提取出去全部内容以后直接显示第二个。

3ba87ddb3c0837720e113d5c42f9c8a4.png

现在问题又来了,如何显示li里面的内容,我想用了正则表达式,但提取出来的是编码以后的中文,只能继续使用Beautifulsoup这个神器,具体研究的过程不再详细阐述,大家看代码就可以。这样代码基本完成,但是不方便使用啊,url是可以变得,于是我弄一个变量放进去,在给一个提示框,把每次要查的单词输入即可。

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

30

#-*- coding=utf8 -*-

importurllib2

importre

frombs4importBeautifulSoup

defget_html(url):#获取网页内容

result=urllib2.urlopen(url)

returnresult.read()

defsave_file(text,filename):#保存到文件

f=open(filename,'ab')

f.write(text)

f.close()

defopen_file(filename):#打开文件

f=open(filename,'r')

text=f.read()

f.close()

returntext

defsoup_html(text,word):# 使用beautifulsoup提取的函数

soup=BeautifulSoup(text)

result=soup.find_all('ul')#这是第一次提取出来的ul结果,需要进行下一步提取

ul_list=str(result[1])# beautifulsoup要求使用字符串类型,所以先转换一下

soup_ul=BeautifulSoup(ul_list)#建立第二个提取实例

forlineinsoup_ul.stripped_strings:#对获取到的ul里的内容进行提取

printline

defmanage():#封装所有函数的main

word=raw_input('请输入要翻译的单词.....')

url='http://www.youdao.com/w/'+word+'/#keyfrom=dict2.top'

soup_html(get_html(url),word)

if__name__=='__main__':

manage()

最后,这次的爬取比较简单,是http和get请求,没有参数和头部什么的要写,只是简单的爬取内容,然后再去分析提取,有兴趣的可以继续研究,这个可以用于大量单词的查找,代码是没有问题的,如果有疑问可与我联系。

好的,下面是一个简单的Python爬虫爬取网页数据并解析数据的教程: 1. 确定目标网站和要爬取的信息 首先,需要确定要爬取的网站和要提取的信息。可以使用Python的requests库向网站发送HTTP请求获取HTML源代码,并使用BeautifulSoup库解析HTML文档获取目标数据。 例如,我们要爬取CSDN博客的文章标题和链接,可以先打开CSDN博客主页,右键查看网页源代码,找到文章标题和链接所在的HTML标签。 2. 发送HTTP请求获取HTML源代码 接下来,使用Python的requests库向网站发送HTTP请求,获取HTML源代码。 ``` import requests url = 'https://blog.csdn.net/' response = requests.get(url) html = response.text ``` 3. 解析HTML文档获取目标数据 使用BeautifulSoup库解析HTML文档,获取目标数据。 ``` from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 上述代码,通过`find_all`方法找到所有class属性为"title"的div标签,然后在每个div标签找到第一个a标签,获取链接和标题文本。 4. 完整代码 ``` import requests from bs4 import BeautifulSoup url = 'https://blog.csdn.net/' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') titles = soup.find_all('div', class_='title') for title in titles: link = title.find('a').get('href') title_text = title.find('a').text.strip() print(title_text, link) ``` 以上就是一个简单的Python爬虫爬取网页数据并解析数据的教程。需要注意的是,在爬取网站数据时要遵守网站的爬虫协议,避免被网站封禁IP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值