修改user-agent爬取数据 遇到的问题

背景:

爬取某网站数据 发现每次请求修改user-agent可以防止被封

 

于是就了以下代码:

Long s = System.nanoTime() % 100;
Long s1 = System.nanoTime() % 100;
headersList.add(new BasicHeader("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537." + s + " (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537." + s1));

本地可以成功的无限制爬取数据

但是当代码在云服务器上运行时,会直接被封

 

修改成以下代码,服务器上可以成功爬取数据:

 private static final String[] MY_USER_AGENT = new String[]{"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
            "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
            "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
            "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
            "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
            "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
            "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
            "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
            "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
            "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
            "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
            "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
            "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
            "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"};

private static final int MY_USER_AGENT_LENGTH = MY_USER_AGENT.length;
 Long s = System.nanoTime() % MY_USER_AGENT_LENGTH;
 String ua = MY_USER_AGENT[s.intValue()];

 

不懂为什么??? (有知道的大佬,抬小弟一手)

 

转载于:https://my.oschina.net/zhuqianli/blog/1615814

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Post方法爬取猎聘前五页数据需要按照以下步骤进行操作: 1.分析URL:首先需要分析猎聘的网页结构和数据请求方式。通过查看网页源代码和开发者工具,找到请求职位列表数据的URL。 2.设置请求参数:根据观察到的URL结构和请求方式,找到需要传递的请求参数。一般包括搜索关键词、页码、每页显示数量等。根据需要设置相应的参数值。 3.构造请求头和请求体:使用Python的Request库构造请求头和请求体,以便发送Post请求。请求头包括User-Agent等信息,请求体包括上一步设置的请求参数。 4.发送请求:使用Request库的post方法发送请求,并将返回的结果保存在一个响应变量中。 5.解析数据:根据返回的响应变量,使用合适的解析库(如BeautifulSoup等)解析网页内容,提取所需的数据信息。 6.翻页处理:根据需求,可以使用循环语句设置爬取前五页的数据。通过修改请求参数的页码值,依次请求每一页的数据,并将数据保存在适当的数据结构中。 7.数据存储:可以将每页的数据添加到一个列表中,或者保存在数据库中,以便后续处理和分析。 8.异常处理:在实际操作中,可能会遇到网络请求失败、网页结构变化等问题。为了保证爬虫程序的稳定性,需要添加异常处理机制,如捕获异常并进行适当的处理。 综上所述,以上是使用Post方法爬取猎聘前五页数据的基本步骤。需要注意的是,爬取猎聘等网站时要遵守相关的网站规则和法律法规,提高爬虫程序的合法性和道德性。 ### 回答2: 要使用POST方法爬取猎聘网前五页的数据,首先需要了解猎聘网的网页结构和接口。 步骤如下: 1. 打开猎聘网(www.liepin.com)网站,并在搜索框中输入相关的搜索关键词。 2. 网页将自动跳转到搜索结果页面。在浏览器的开发者工具中,选择Network面板,并勾选"Preserve log"选项,以便保留接下来的网络请求。 3. 在搜索结果页面中,可以看到搜索结果的第一页数据。通过查看Network面板中的请求,找到与搜索结果相关的接口。 4. 在网络请求中找到基于POST方法的接口,并查看该接口的请求参数。 5. 在Python中使用requests库发送POST请求,并将搜索关键词和请求参数传递给接口。可以使用json格式的数据作为请求体。 6. 将返回的数据进行解析和处理,在这个过程中,可能需要使用beautifulsoup或其他解析库来提取所需的信息。 7. 根据页面的分页结构,将前五页的数据进行循环爬取,并将结果存储在合适的数据结构中。 8. 完成爬取后,可以将结果保存到文本文件、数据库或其他形式的数据存储中,便于后续的数据处理和分析。 需要注意的是,爬取网站数据时应遵循相关法律法规和网站的使用条款,不得进行恶意请求和侵犯隐私等行为。 ### 回答3: 要用post方法爬取猎聘前五页的数据,需要以下步骤: 1. 导入相关的库和模块:首先需要导入Python的requests库和BeautifulSoup库,用于发送post请求和解析html文档。 2. 分析网页:在浏览器中打开猎聘网站,搜索相关职位并进入搜索结果页面。右键点击页面,选择“检查”(Inspect),查看网页的源代码。通过观察源代码,找到包含职位信息的元素结构和所需的post请求参数。 3. 构造post请求:在发送post请求之前,需要构造请求的url和参数。首先需要获取职位搜索的url,可以从浏览器的开发者工具中的网络面板查看request的url。然后根据分析的元素结构和所需的参数,构造post请求的data参数。 4. 发送post请求并获取相应:使用requests库发送post请求,将所需的url和data作为参数传递给post方法,获取网页的相应。 5. 解析网页:使用BeautifulSoup库对获取的网页相应进行解析。通过查找元素的标签和类等属性,提取出所需的职位信息。 6. 循环爬取前五页数据:通过观察猎聘网站的url结构,可以发现每一页的url后面都有一个页码参数。利用循环语句,构造每一页的url,并发送post请求,获取并解析网页相应,提取所需的职位信息。 综上所述,按照以上步骤,可以使用post方法爬取猎聘前五页的数据。需要注意的是,爬取网站时需要遵守网站的爬虫规则,并不过度频繁地发送请求,以免对网站造成负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值