美文网首页我爱编程
python爬虫笔记-weikipedia数据爬取

python爬虫笔记-weikipedia数据爬取

作者: SWJTU_CC | 来源:发表于2018-04-14 12:15 被阅读0次

#from urllib import request

from urllib.requestimport urlopen

#from urllib.request import Request

from urllib import parse

from bs4 import BeautifulSoup

import re

#请求url并把结果用UTF-8编码

resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")

#使用BeautiSoup去解析

soup = BeautifulSoup(resp,"html.parser")

#获取所有以/wiki/开头的a标签的href属性

listUrls = soup.find_all("a",href=re.compile("^/wiki/"))# ^表示是以wiki开头的,不是保护wiki的 , find_all返回的可以是一个正则表达式对象

# print(listUrls)

for urlin listUrls:

print(url["href"])

print("#########################################################")

#输出所有词条对应名称和url

for urlin listUrls:#循环记得加冒号

#过滤以.jpg或者.JPG结尾的链接

    if not re.search("\.(jpg|JPG)$",url["href"]):#if记得加冒号 \.表示字符点号 $表示结尾

    print(url.get_text(),"-------","https://en.wikipedia.org" + url["href"])#输出url的href的属性 有冒号的地方就要缩进


总结:urllib与BeautifulSoup

常用的方法urlopen,它可以用来请求一个地址,read()方法可以读取里面的内容,decode内容就可以进行编码。

BeautifulSoup自带utf-8的编码,所以在urlopen处写不写都可以。

代码中传给BeautifulSoup的解析器是Python自带的解析器html.parser

获取文字内容的方法有两个一个是.string,还有一个是.get_text(),区别是前者只能获取一个,后者是获取标签下所有的文字。

相关文章

网友评论

    本文标题:python爬虫笔记-weikipedia数据爬取

    本文链接:https://www.haomeiwen.com/subject/btflkftx.html