|
5鱼币
- import re
- import csv
- import time
- import random
- import threading
- import requests
- import urllib.request
- from bs4 import BeautifulSoup
- from urllib.error import URLError
- from multiprocessing import Queue
- User_Agent=["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
- "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
- "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
- 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0']
- HEADERS = {
- 'User-Agent': User_Agent[random.randint(0,6)],
- # 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/201002201 Firefox/55.0',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
- 'Accept-Encoding': 'gzip, deflate, br',
- 'Cookie': '',
- 'Connection': 'keep-alive',
- 'Pragma': 'no-cache',
- 'Cache-Control': 'no-cache'
- }
- proxies = {
- "http": "http://",
- "https": "https://1.196.123.98:808",
- }
- def Ip(i, x): # 爬取ip
- try:
- r = requests.get('http://www.kuaidaili.com/free/inha/' + str(i) + '/', timeout=30)
- r.raise_for_status()
- r.encoding = r.apparent_encoding
- html = r.text
- except URLError as e:
- if hasattr(e, 'reason'):
- print('没有找到服务器')
- print('Reason:', 'e.reason')
- elif hasattr(e, 'code'):
- print('服务器无法完成请求')
- print('Error code', e.code)
- ip = r'<td data-title="IP">(.*?)</td>'
- port = r'<td data-title="PORT">(.*?)</td>'
- ip_list = re.findall(ip, html)
- port_list = re.findall(port, html)
- print(len(ip_list), len(port_list))
- for i in range(len(ip_list)):
- x.append(ip_list[i] + ':' + port_list[i])
- return x
- def Page(): # 确定爬取ip的页面数
- list_ip = []
- for i in range(1,2):
- list_ip = Ip(i,list_ip)
- time.sleep(3)
- return list_ip
- def Scenic(ip_list):
- url = 'http://piao.qunar.com/ticket/detail_648971909.html?st=' \
- 'a3clM0QlRTYlQjklOTglRTYlQkQlQUQlMjZpZCUzRDM3NDIlMjZ0eXBlJTNEMCUyNmlke' \
- 'CUzRDMlMjZxdCUzRHJlZ2lvbiUyNmFwayUzRDIlMjZzYyUzRFdXVyUyNmFidHJhY2UlM0R' \
- 'id2QlNDAlRTUlQTQlOTYlRTUlOUMlQjAlMjZ1ciUzRCVFNiVCOSU5NiVFNSU4RCU5NyUyNmxy' \
- 'JTNEJUU2JUI5JTk4JUU2JUJEJUFEJTI2ZnQlM0QlN0IlN0Q%3D#from=mps_search_suggest_h'
- proxies['http'] = 'http://' +str(list_ip[random.randint(0, 15)])
- response= requests.get(url,headers=HEADERS,allow_redirects=False,timeout=5).content.decode('utf-8')
- print(response)
- with open('ceshi2.txt', 'w') as f:
- f.write(response)
- if __name__ == '__main__':
- list_ip = Page()
- Scenic(list_ip)
复制代码
想写个爬数据的代码,这是写得一部分测试代码 但抓取的页面代码不全 后面评论区的基本没有,
前面也有一些空白的行 如:
<div class="mp-charact-desc">
<p>
9:00~17:00开放;
</p>
我想问下:
1、怎么才能抓取完整的页面代码?
2、若抓取的是这样的页面,若我想匹配如上所说的信息“9:00~17:00开放;”,该如何写正则表达式或用其他方法怎么实现?
急求,有高手能帮忙解决吗?
本帖最后由 gopythoner 于 2017-6-9 18:09 编辑
你的意思是你在网页中能够看到的信息,但是用爬虫爬下来的源代码是没有的对吧?
我看了一下,这个网站的价格等信息都是通过异步加载出来的 ,如果你会看F12的抓包信息的话,看看HXR这个里面的就知道了,是存在一个json格式里面的
请求这个 http://piao.qunar.com/ticket/detail/getTickets.json链接(你直接请求是没用的,要提交表单),然后使用POST发送信息
表单信息是
- sightId:3742
- from:detail
- supplierId:
复制代码
|
最佳答案
查看完整内容
你的意思是你在网页中能够看到的信息,但是用爬虫爬下来的源代码是没有的对吧?
我看了一下,这个网站的价格等信息都是通过异步加载出来的 ,如果你会看F12的抓包信息的话,看看HXR这个里面的就知道了,是存在一个json格式里面的
请求这个http://piao.qunar.com/ticket/detail/getTickets.json链接(你直接请求是没用的,要提交表单),然后使用POST发送信息
表单信息是
|