鱼C论坛

 找回密码
 立即注册
查看: 2191|回复: 3

爬链接中的小问题

[复制链接]
发表于 2017-6-5 19:32:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这段代码是用来爬去CSDN链接的,虽然已经爬取成功,但是为什么会出现元组类型呢?求帮忙指点。
import re
import urllib.request
def getlink( url ):
    #模拟浏览器
    headers = ( 'User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')
    opener = urllib.request.build_opener( )
    opener.addheaders = [ headers ]
    urllib.request.install_opener( opener )
    data = urllib.request.urlopen( url ).read( )
    #print( data )
    data = str( data )
    #根据需求构建链接正则表达式
    #pattern = r'(https?://[^\s";]+\.((\w|/)*)
    pattern = r'(https?://[^\s)";]+\.(\w|/)*)'
    link = re.compile( pattern ).findall( data )
    #print( link )
    #通过set去除掉重复元素
    #link = list( set(link))
    return link
url = 'http://blog.csdn.net/'
linklist = getlink( url )
for link in linklist:
    print( link )


Capture113.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-5 19:44:40 | 显示全部楼层
因为re.findall返回的就是列表中间一个个元组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-5 20:16:12 From FishC Mobile | 显示全部楼层
ooxx7788 发表于 2017-6-5 19:44
因为re.findall返回的就是列表中间一个个元组

那为什么是这种呢?列表中的每一个元素(即元组)中的第二个元素,都是第一个元素最后一个字符呢?能帮忙解释下吗谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-5 20:49:53 | 显示全部楼层
Shawn_Python 发表于 2017-6-5 20:16
那为什么是这种呢?列表中的每一个元素(即元组)中的第二个元素,都是第一个元素最后一个字符呢?能帮忙 ...

对不起,我对正则表达式不怎么了解。
不过,我改成pattern = r'(https?://[^\s)";]+\w)'这样以后,爬到的链接比你多。也就不会多一个 字母出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-14 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表