您的位置:首页 > 编程语言 > Python开发

python爬虫笔记-weikipedia数据爬取

2018-04-21 19:58 393 查看

#from urllib import requestfrom urllib.requestimport urlopen#from urllib.request import Requestfrom urllib import parsefrom bs4 import BeautifulSoupimport 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("#########################################################")#输出所有词条对应名称和urlfor 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(),区别是前者只能获取一个,后者是获取标签下所有的文字。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: