当前位置:   article > 正文

python抓取静态网页_python静态 爬虫数据

python静态 爬虫数据

lofter的同人文都是一篇一篇的,懒得找,所以就花了点时间写个爬虫,爬取文本数据存储成本地text。这里主要通过lofter的作者专区文章搜索接口地址进行爬取数据。

示例:我是走高冷路线的    该作者的文章搜索地址为:http://sanliubixian.lofter.com/search?q=

后面输入文章名就能搜索到该作者对应的文章。而且还有一个特点,她的文章顺序是根据序号来的,如征服欲1,征服欲2 ...这样,我们就可以进行循环爬取数据了。

1.准备工作

前面踩了很多坑,这里也不一一详细叙述了。我的本地python版本是2.7的。这个注意一下,因为2.7和3.x有一些区别。在这里最主要的区别是使用的urllib模块。这里可以参考一下这位博主。

python 2.xx使用import urllib.request报错no module named request_典笛安的博客-CSDN博客 

第二个就是安装web模块 ,pip install web.py即可安装。

第三个就是编码问题,这里建议使用python的开发工具,我用的是submit text。

其他的就没了,反正就一个py文件,直接上代码吧

 index.py

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import re
  4. import urllib
  5. import urllib2
  6. import web
  7. import json
  8. urls = (
  9. '/', 'hello'
  10. )
  11. app = web.application(urls, globals())
  12. # 定义函数
  13. def gettext( i ):
  14. url = 'http://sanliubixian.lofter.com/search?q='
  15. keyword = i.encode(encoding='utf-8')
  16. key_code = urllib.quote(keyword) # 对请求进行编码
  17. url_all = url+key_code
  18. header = {
  19. 'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
  20. } #头部信息
  21. request = urllib2.Request(url_all,headers=header)
  22. reponse = urllib2.urlopen(request).read()
  23. from bs4 import BeautifulSoup
  24. html_doc = reponse;
  25. #创建一个BeautifulSoup解析对象
  26. soup = BeautifulSoup(html_doc.replace(' ', ' '),"html.parser",from_encoding="utf-8")
  27. #获取文本
  28. title = soup.find('h2')
  29. print title
  30. if title==None:
  31. print "全文数据抓取完成!!!"
  32. return "false"
  33. else:
  34. p_nodes = soup.find_all('p')
  35. fh = open("./"+title.get_text()+".txt","wb") # 将文件写入到当前目录中
  36. fh.write(title.get_text().encode(encoding='utf-8'))
  37. fh.write('\r\n')
  38. for p_node in p_nodes:
  39. #print p_node.get_text()
  40. fh.write(p_node.get_text().encode(encoding='utf-8'))
  41. fh.write('\r\n')
  42. fh.close()
  43. print "抓取:"+title.get_text().encode(encoding='utf-8')
  44. return "true"
  45. class hello:
  46. def __init__(self):
  47. web.header('content-type', 'text/json')
  48. web.header('Access-Control-Allow-Origin', '*')
  49. web.header('Access-Control-Allow-Methods', 'GET, POST')
  50. def GET(self):
  51. i = web.input(name=None)
  52. for num in range(1,30):
  53. s=i.name+str(num)
  54. result=gettext(s)
  55. if result=="false":
  56. break
  57. '''
  58. t={'msg':'开始爬取数据...','title':title.get_text()}
  59. s={}
  60. s['data']=t
  61. return json.dumps(s,ensure_ascii=False)
  62. '''
  63. def POST(self):
  64. a = int(web.input().a)
  65. b = int(web.input().b)
  66. return a + b
  67. if __name__ == "__main__":
  68. app.run()

运行结果:

 

 码字踩坑不易,转载请注明出处!!谢谢!!

lz初次接触python,自己找资料自己看文档写的,如有不专业之处,还请专业人士见谅

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/1006809
推荐阅读
相关标签
  

闽ICP备14008679号