vsyour 发表于 2016-6-20 16:57

Python爬取【吾爱破解】在百度中的所有收录网址与标题

本帖最后由 vsyour 于 2016-6-20 17:07 编辑

哈哈,前段时间因违反论雲版规,被关小黑屋了,通过改造放出来了,最近学了点Python,就顺手为吾爱写点东西和大家一起玩玩。
同时提创大家多多爱护这个家园,这确实是个好地方,以前的看雪,吾爱,对我的帮助确实不小,先感谢下哈。
【版规】http://www.52pojie.cn/thread-463264-1-1.html

如果有什么需求大家跟贴啊,我尽量陪你们玩。【请不要吝啬您手中的赞哦,帮我加点爱心哈】


代码效果:


源代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
尝试52pojie.cn爬取百度对网站收录的所有链接
其他功能以后再慢慢玩。哈哈
有什么需求可以跟贴提出,记得帮我加点【CB】哦
'''

import requests
from random import randint
from bs4 import BeautifulSoup
import re
import datetime
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

HEADERS = {
      "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
      "X-Forwarded-For": '%s:%s:%s:%s' % (randint(1, 255),
                                                                              randint(1, 255), randint(1, 255), randint(1, 255)),
      "Content-Type": "application/x-www-form-urlencoded",
      "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
      "Connection": "keep-alive"}

# print HEADERS
start_time = datetime.datetime.now()# 取当前时间
print (u'[-] 现在时间:%s') % start_time

for pn in range(0, 750, 10):
      print ('第【%s】页')%pn
      url_a = 'https://www.baidu.com/s?wd=site%3A52pojie.cn&pn='
      url_b = '&oq=site%3A52pojie.cn&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=dd6157d100015d1f&rsv_t=9a3eHncH3YeAeoblNqMm1f3%2FAQsJeSgF03XLXg6VDz6VqSprqUL8lGGO3us'
      joinUrl = url_a + str(pn) + url_b
      # print joinUrl   #拼接URL
      html_Doc = requests.get(joinUrl, headers=HEADERS).content# 从Url 中取回网站源码
      html_Soup = BeautifulSoup(html_Doc, 'html.parser', from_encoding='utf-8')
      all_H3 = html_Soup.findAll('h3', attrs={'class': 't'})# 取所有H3标签中class为t的所有元系
      print (u'[+] 此页共找到%s条数据!') % len(all_H3)

      for each in all_H3:
                # print each
                link = re.findall(r'" href="(.*?)" target="_blank">.*?</a></h3>', str(each), re.S)
                title = re.findall(r'" href=".*?" target="_blank">(.*?)</a>', str(each), re.S)
                print '[-] 标题:%s 链接:%s'%(str(title), str(link))





代码引入了以下几个模块,需要先安装才能跑起来。
BeautifulSouprequests这两个模块估计你得自己安装一下。pip install BeautifulSoup
pip install requests



拜伦 发表于 2016-6-20 17:07

抓取其他网站 是不是把源码代码

&oq=site%3A52pojie.cn&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=dd6157d100015d1f&rsv_t=9a3eHncH3YeAeoblNqMm1f3%2FAQsJeSgF03XLXg6VDz6VqSprqUL8lGGO3us

改成

&oq=site%3A网站地址&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=dd6157d100015d1f&rsv_t=9a3eHncH3YeAeoblNqMm1f3%2FAQsJeSgF03XLXg6VDz6VqSprqUL8lGGO3us

vsyour 发表于 2016-6-20 17:31

拜伦 发表于 2016-6-20 17:27
其实我想问的是 BeautifulSoup and requests这两个模块是去 github 去下载吗我找不到唉 能分享下吗

请参考:
BeautifulSoup :https://www.crummy.com/software/BeautifulSoup/bs4/doc/
requests:http://www.python-requests.org/en/master/

vsyour 发表于 2016-6-20 16:57

哈。说的就是你,写得不好不要笑。

vsyour 发表于 2016-6-20 17:11

拜伦 发表于 2016-6-20 17:07
抓取其他网站 是不是把源码代码

&oq=site%3A52pojie.cn&ie=utf-8&usm=1&rsv_idx=1&rsv_pq=dd6157d100015 ...

是的。试下把URL换掉就可以了。或者你直接把52pojie.cn换成你要爬取的试试看。

拜伦 发表于 2016-6-20 17:14

vsyour 发表于 2016-6-20 17:11
是的。试下把URL换掉就可以了。或者你直接把52pojie.cn换成你要爬取的试试看。

BeautifulSoup and requests 这两个模块 去网上找然后通过pip 安装吗

vsyour 发表于 2016-6-20 17:18

拜伦 发表于 2016-6-20 17:14
BeautifulSoup and requests 这两个模块 去网上找然后通过pip 安装吗

pip是安装模块的工具,就同平常系统里面用到的apt-get 或者yum命令一样的。
系统中如果没有pip工具的话就需要安装一下,安装方法可以是apt-get install pip或者yum -y install pip

然后就能用pip安装模块了。

jim007200 发表于 2016-6-20 17:23

尽然没用多线程……

bj1686 发表于 2016-6-20 17:27

有啥用处啊?

拜伦 发表于 2016-6-20 17:27

vsyour 发表于 2016-6-20 17:18
pip是安装模块的工具,就同平常系统里面用到的apt-get 或者yum命令一样的。
系统中如果没有pip工具的话 ...

其实我想问的是 BeautifulSoup and requests这两个模块是去 github 去下载吗我找不到唉 能分享下吗
页: [1] 2 3
查看完整版本: Python爬取【吾爱破解】在百度中的所有收录网址与标题