鱼C论坛

 找回密码
 立即注册
查看: 3392|回复: 11

爬取网站数据时,运行后python没有反应也没有报错

[复制链接]
发表于 2019-7-12 21:20:26 | 显示全部楼层 |阅读模式

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

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

x
在爬去网站数据时,运行代码,没有报错也没有出结果,不知道是什么原因,还望前辈给纠正一下呀

(运行后只能显示到这一步)
=================== RESTART: C:\Users\ccy\Desktop\大众点评.py ===================
>>>


  1. import bs4
  2. import requests
  3. import re

  4. def open_url(url):
  5.     headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
  6.    
  7.     res = requests.get(url, headers = headers)

  8.     return res

  9. def main():
  10.     host = 'http://www.dianping.com/search/keyword/10/10_%E8%81%9A%E9%A4%90/o2'
  11.     res = open_url(host)


  12. def find_food(url):
  13.    

  14.     soup = bs4.BeautifulSoup(res.text,'html.parser')
  15.     #店
  16.     dian = []

  17.     targets = soup.find_all('div',class_ = 'tit')

  18.     for each in targets:
  19.         dian.append(each.a.h4.text)

  20.     #分数
  21.     ranks = []

  22.     targets = soup.find_all('span',class_ = 'comment-list')

  23.     for each in targets:
  24.         ranks.append('评分:%s'%each.span.b.text)

  25.     #推荐菜
  26.     dish = []

  27.     targets = soup.find_all('div',class_ = 'recommend')

  28.     for each in targets:
  29.         dish.append(each.a.recommend-click.text)


  30.     result = []
  31.     length = len(dian)
  32.     for i in range(length):
  33.         result.append(dian[i] + ranks[i] + dish[i] + '\n')

  34.     return result

  35.     with open ('大众点评餐厅.txt', 'w', encoding = 'utf-8')as f:
  36.         for each in result:
  37.             f.write(each)

  38. if __name__ == '__main__':
  39.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-7-13 06:46:59 | 显示全部楼层
  1. import bs4
  2. import requests
  3. import re

  4. def open_url(url):
  5.     headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
  6.    
  7.     res = requests.get(url, headers = headers)

  8.     return res
  9. def find_food(res):
  10.    

  11.     soup = bs4.BeautifulSoup(res.text,'html.parser')
  12.     #店
  13.     dian = []

  14.     targets = soup.find_all('div',class_ = 'tit')

  15.     for each in targets:
  16.         dian.append(each.a.h4.text)

  17.     #分数
  18.     ranks = []

  19.     targets = soup.find_all('span',class_ = 'comment-list')

  20.     for each in targets:
  21.         ranks.append('评分:%s'%each.span.b.text)

  22.     #推荐菜
  23.     dish = []

  24.     targets = soup.find_all('div',class_ = 'recommend')

  25.     for each in targets:
  26.         dish.append(each.a.recommend-click.text)


  27.     result = []
  28.     length = len(dian)
  29.     for i in range(length):
  30.         result.append(dian[i] + ranks[i] + dish[i] + '\n')

  31.     return result

  32.     with open ('大众点评餐厅.txt', 'w', encoding = 'utf-8')as f:
  33.         for each in result:
  34.             f.write(each)
  35. def main():
  36.     host = 'http://www.dianping.com/search/keyword/10/10_%E8%81%9A%E9%A4%90/o2'
  37.     res = open_url(host)
  38.     find_food(res)




  39. if __name__ == '__main__':
  40.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-13 08:41:49 | 显示全部楼层
本帖最后由 漫步云端〃 于 2019-7-13 08:44 编辑

先看看你需要的模块有没有导入,requests和BS4都是需要单独PIP安装的。requests和urllib不一样,requests是不需要添加表头user-agent的。
另外,去核对一下网址,一般这种点评网址都有好几页的,你多点几页看看是不是你登录栏的网址。每一页的page_url也是有差别的。

暂时就知道这么多。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-13 09:31:13 | 显示全部楼层
感觉你的代码是从哪儿复制粘贴的呢?因为你的find food这个函数根本没有用上啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-13 18:12:59 | 显示全部楼层
return result

    with open ('大众点评餐厅.txt', 'w', encoding = 'utf-8')as f:
        for each in result:
            f.write(each)

写入文件这一块根本没有运行,函数遇到return语句就会结束,return后面的语句不会执行
比如:
def temp():
    print('我在returm前面')
    s = 'www'
    return s
    print('我在return后面')

temp()
结果:
D:\program\python37\python.exe F:/pythonlianxi/MyTest/test.py
我在returm前面

Process finished with exit code 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 20:49:08 | 显示全部楼层
Will_M 发表于 2019-7-13 09:31
感觉你的代码是从哪儿复制粘贴的呢?因为你的find food这个函数根本没有用上啊

非常感谢你的解答呀,这个代码是看的小甲鱼教学的视频,然后想自己尝试爬取别的数据来仿照着写的。
看来还是我这技术太菜了。 函数都没用上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 20:53:36 | 显示全部楼层
漫步云端〃 发表于 2019-7-13 08:41
先看看你需要的模块有没有导入,requests和BS4都是需要单独PIP安装的。requests和urllib不一样,requests是 ...

谢谢呀,非常感谢解答。模块之前都安装好了的。 是我没理解这些函数的用法, 只仿制别人的来写了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 21:44:20 | 显示全部楼层
Will_M 发表于 2019-7-13 09:31
感觉你的代码是从哪儿复制粘贴的呢?因为你的find food这个函数根本没有用上啊

还有 想弱弱的问一句。这个怎么看出来find food的函数是没有用上的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 21:45:39 | 显示全部楼层
chxchxkkk 发表于 2019-7-13 18:12
return result

    with open ('大众点评餐厅.txt', 'w', encoding = 'utf-8')as f:

多谢解答呀!!!懂了,原来是这个的问题,基础完全为零。
非常感谢了 ,我去修改试试看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 21:47:03 | 显示全部楼层

多谢解答呀,我把这个代码再好好研究下,应该是return的这个原因
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-13 22:11:41 | 显示全部楼层
我打人很温柔的 发表于 2019-7-13 21:44
还有 想弱弱的问一句。这个怎么看出来find food的函数是没有用上的呢?

首先你的程序入口是main()函数吧,然后main()函数里面就只调用了open url()函数,而且open url()函数里面也没有调用find food这个函数,这样整个程序就结束了,所以你的find food函数只定义了而没有调用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 15:08:29 | 显示全部楼层
Will_M 发表于 2019-7-13 22:11
首先你的程序入口是main()函数吧,然后main()函数里面就只调用了open url()函数,而且open url()函 ...

非常感谢,这会懂了,激动的要捂嘴哭了
非常感谢耐心解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-16 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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