24小时热门版块排行榜    

查看: 3687  |  回复: 19

惟舞幽游

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 菜鸟学python at 2016-07-29 15:58:43
同求,这个困让我很久了

你到哪一步了

发自小木虫Android客户端
11楼2016-08-05 23:00:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

邪恶胖子

铜虫 (正式写手)

引用回帖:
8楼: Originally posted by 惟舞幽游 at 2016-08-05 22:57:57
刚刚学习,老师催的急,有什么快速学习的好规划吗?
...

快就用框架,然后直接正则表达式处理文本就好了

发自小木虫Android客户端
Just fight like a real man.
12楼2016-08-05 23:03:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

惟舞幽游

新虫 (初入文坛)

引用回帖:
12楼: Originally posted by 邪恶胖子 at 2016-08-05 23:03:56
快就用框架,然后直接正则表达式处理文本就好了
...

尝试过scrapy框架,可能学的时间太短,spider里还不怎么会实现想要的功能,正则总是记不住

发自小木虫Android客户端
13楼2016-08-05 23:08:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

JumperSX

新虫 (初入文坛)

先看能不能直接构造url,不行的话看看有没有api,再没有的话就用fiddler抓包,看能不能分析数据包。再不行的话我也不会了。

发自小木虫Android客户端
14楼2016-08-05 23:36:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

邪恶胖子

铜虫 (正式写手)

引用回帖:
13楼: Originally posted by 惟舞幽游 at 2016-08-05 23:08:02
尝试过scrapy框架,可能学的时间太短,spider里还不怎么会实现想要的功能,正则总是记不住
...

scrpay够你学的,正则是必须学的

发自小木虫Android客户端
Just fight like a real man.
15楼2016-08-05 23:38:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wy_zidu2012

金虫 (小有名气)

引用回帖:
7楼: Originally posted by 惟舞幽游 at 2016-08-05 22:54:13
谢谢你,目前用selenium实现了关键词自动输入搜索,但不知道怎么判断一个页面是否抓完,然后再翻页抓下一页
...

selenium没用过,只写过原生实现和scrapy。
基本原理是,请求一个页面,先保存页面中搜索结果位置处的连接在队列中,也就是通过bs4把含有下一层的连接拿到,然后要抓什么东西直接自己修改就可以。至于翻页的逻辑,大多数网站的URL中都有一个表示当前页码的字段,一般的网站的时候,当前页码都是通过get方法发送,所以直接修改请求的URL就可以拿到下一页了。如果实在找不到,可以抓包,看下处理过程,然后再操作。
16楼2016-08-06 08:39:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

惟舞幽游

新虫 (初入文坛)

引用回帖:
14楼: Originally posted by JumperSX at 2016-08-05 23:36:40
先看能不能直接构造url,不行的话看看有没有api,再没有的话就用fiddler抓包,看能不能分析数据包。再不行的话我也不会了。

谢谢啦,我摸索摸索

发自小木虫Android客户端
17楼2016-08-06 08:46:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

惟舞幽游

新虫 (初入文坛)

引用回帖:
16楼: Originally posted by wy_zidu2012 at 2016-08-06 08:39:46
selenium没用过,只写过原生实现和scrapy。
基本原理是,请求一个页面,先保存页面中搜索结果位置处的连接在队列中,也就是通过bs4把含有下一层的连接拿到,然后要抓什么东西直接自己修改就可以。至于翻页的逻辑, ...

感谢,再摸索摸索,不会了再请教你

发自小木虫Android客户端
18楼2016-08-06 08:52:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

邪恶胖子

铜虫 (正式写手)

【答案】应助回帖


真拿你没办法
木虫上面貌似没有代码块啊!
给你一个简单的吧
这个是一个简单的抓取百度的展示:

import urllib.request
import urllib.parse
import gzip
import io

#baidu
url = 'http://www.baidu.com/'
#360
url = 'https://www.so.com/'
client_header = {
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'Host': 'www.baidu.com',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36',
    'Referer': 'http://www.baidu.com/'
}

#baidu
params = urllib.parse.urlencode({'word': 'test','tn': '94755996_hao_pg'})
url = "http://www.baidu.com/s?%s" % params
#360
# params = urllib.parse.urlencode({'q': 'test'})
# url = "http://www.so.com/s?%s" % params
print(url)
req = urllib.request.Request(url,headers=client_header)
with urllib.request.urlopen(req,timeout=1000) as f:

    buf = io.BytesIO(f.read())
    gf = gzip.GzipFile(fileobj=buf,mode='rb')
    html = gf.read().decode('utf-8')
    print(html)
    f = open('baidu.txt','wb+')
    f.write(bytes(html.encode('utf-8')))
    f.close()

模拟的是火狐的浏览器,最简单的,你看一下吧!希望对你有帮助
Just fight like a real man.
19楼2016-08-06 13:15:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

邪恶胖子

铜虫 (正式写手)

【答案】应助回帖

注意了,每个搜索引擎的参数和验证方法不一样,多用自己喜欢的工具抓包,很简单的
Just fight like a real man.
20楼2016-08-06 13:16:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 惟舞幽游 的主题更新
信息提示
请填处理意见