|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import requests,json
- from lxml import etree
-
- def gethtml(url):
-
- headers={
- "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
- "Cookie":"",
- "Referer":"https://www.mzitu.com/217910/40",
- }
- r=requests.get(url,headers=headers)
- if r.status_code !=200:
- print("获取url:%s失败!"%(url))
- exit()
- return r
-
-
- def getxpath(r,str):
- html = etree.HTML(r.text)
- reslist = html.xpath(str)
- return reslist
-
-
- def writetxt(txtpath,data_str):
- with open(txtpath, "w") as f:
- f.write(str(data_str))
-
- def writeimg(imgpath,content):
- with open(imgpath, "wb") as f:
- f.write(content)
- def get_mezitu():
- url='https://www.mzitu.com/217910/40'
- r=gethtml(url)
- mezitu_url_list=getxpath(r,'img/html/body/div[2]/div[1]/div[3]/p/a/img/@src')
- mezitu_url=mezitu_url_list[0]
- mezitu_url="https:"+mezitu_url
- r=gethtml(mezitu_url)
- writeimg('./妹子jpg.png',r.content)
- print('恭喜爬到图片')
-
- if __name__ == '__main__':
- get_mezitu()
- print('恭喜')
复制代码 下面是报错信息,求大神告诉如何修改。
- Traceback (most recent call last):
- File "D:/桌面图标文件目录/妹子图.py", line 48, in <module>
- get_mezitu()
- File "D:/桌面图标文件目录/妹子图.py", line 40, in get_mezitu
- mezitu_url=mezitu_url_list[0]
- IndexError: list index out of range
- >>>
复制代码
别纠结了。你这个很显然是解析网页数据的时候出现了问题,可能是模块问题,也可能是你用法错了
最简单的还是建议换方式吧。现在爬虫用的比较多的是requests,BeautifulSoup模块,和lxml解析器
模块导入:
- import requests
- from bs4 import BeautifulSoup
- # lxml解析器不需要导入
复制代码
获取网页文本可以这么写:
- def getHTMLText(url):
- try:
- res = requests.get(url, timeout=30)
- res.raise_for_status() # 如果状态不是200,即未成功获得数据则抛出异常
- res.encoding = res.apparent_encoding # 用备用编码解码数据
- return res.text
- except:
- return '爬取异常,异常url:' + url
复制代码
解析可以用:
- soup = BeautifulSoup(res.text,'lxml')
- temp = soup.select('dd > a') # 函数筛选
- # 或者用的比较多的正则
- id = re.find_all('"ID":"(.*?)","', res.text) # 正则表达式
- soup.find_all(‘div’,class_=’item’) # BeautifulSoup查找
- # 或者直接获取属性
- soup.a.attrs
复制代码
这都是当下用的最多最常见的,用的人多了应该就比较稳定了吧,强烈建议试试
你用的这么冷门的,也查不到什么资料,可能很多人也和我一样根本没用过你用的方法
就没法给你解答了。。。
|
|