我试图从字符串中提取美国唯一的电话号码.
我浏览了网络/ SO但是没有找到适合我需求的合适解决方案.
说实话,我有2.5年的网络编程经验,但我在RegEX吮吸.
这里只有我写的RegEX (\d{3}+\-\d{3}+\-\d{4}+)
但它只能检测到 589-845-2889
这是我要提取的电话号码.
589-845-2889
(589)-845-2889
589.845.2889
589 845 2889
5898452889
(589) 845 2889
Run Code Online (Sandbox Code Playgroud)
请告诉我如何在单个Regex for PHP中实现这一壮举.
编辑:
如果您认为用户可以输入任何其他格式的美国号码,也请同时提及,并将其包含在RegEX中.
PS:
实际上我正试图刮掉Craiglist,用户可能已经以任何可能的格式发布了他们的电话号码.
我有一个Scrapy Spider,它会抓取一个网站,并且该网站需要刷新令牌才能访问它们。
def get_ad(self, response):
temp_dict = AppextItem()
try:
Selector(response).xpath('//div[@class="messagebox"]').extract()[0]
print("Captcha found when scraping ID "+ response.meta['id'] + " LINK: "+response.meta['link'])
self.p_token = ''
return Request(url = url_, callback=self.get_p_token, method = "GET",priority=1, meta = response.meta)
except Exception:
print("Captcha was not found")
Run Code Online (Sandbox Code Playgroud)
我有一种get_p_token刷新令牌并分配给的方法self.p_token
get_p_token 找到验证码后调用,但问题是其他请求继续执行。
我希望如果找到了验证码,请不要执行下一个请求,直到执行get_p_token完成。
我有,priority=1但这无济于事。
PS:
实际上,令牌是传递给每个URL的,这就是为什么我要等到找到新令牌,然后再抓取其余URL。
其中有一些网址[]就像
http://www.website.com/CN.html?value_ids[]=33&value_ids[]=5007
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用Scrapy抓取此URL时,会向此URL发出请求
http://www.website.com/CN.html?value_ids%5B%5D=33&value_ids%5B%5D=5007
Run Code Online (Sandbox Code Playgroud)
如何强制scrapy不要urlenccode我的网址?
我想使用 Scrapy Splash 加载本地 HTML 文件并将其另存为 PNG/JPEG,然后删除该 HTML 文件
script = """
splash:go(args.url)
return splash:png()
"""
resp = requests.post('http://localhost:8050/run', json={
'lua_source': script,
'url': 'file://my_file.html'
})
resp.content
Run Code Online (Sandbox Code Playgroud)
它返回我
加载页面失败(协议“”未知)网络错误 #301
我也试过
yield SplashRequest(url=filepath,
callback=self.parse_result,
meta={'filepath': filepath},
args={
'wait': 0.5,
'png': 1,
},
endpoint='render.html',
)
Run Code Online (Sandbox Code Playgroud)
但我得到
2020-04-23 12:07:41 [scrapy.downloadermiddlewares.retry] 调试:重试 http://localhost:8050/render.html>(失败 1 次):502 错误网关
pipeline.py代码
class Examplepipeline(object):
def __init__(self):
dispatcher.connect(self.spider_opened, signal=signals.spider_opened)
dispatcher.connect(self.spider_closed, signal=signals.spider_closed)
def spider_opened(self, spider):
log.msg("opened spider %s at time %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))
def process_item(self, item, spider):
log.msg("Processsing item " + item['title'], level=log.DEBUG)
def spider_closed(self, spider):
log.msg("closed spider %s at %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))
Run Code Online (Sandbox Code Playgroud)
在上面的蜘蛛代码中,它将显示蜘蛛的开始时间和结束时间,但现在蜘蛛完成后,我想从scrapy收到一封"Scraping已完成"的邮件.是否有可能做到这一点.如果可能,我们可以在spider_closed方法中编写该代码,任何人都可以分享一些关于如何执行此操作的示例代码.
我在我的代码中写了这一行
vector<GLfloat> cone1 { 0.0f, 2.4f, -11.0f, /*rotated*/30.0f, -1.5f, 0.0f, 0.0f };
Run Code Online (Sandbox Code Playgroud)
但是错误在C++ 98中出现,变量必须由构造函数初始化而不是{}
我已经搜索了我应该使用-std-c ++ 11的解决方案,但我不知道如何在Eclipse中添加它?
我刮这个链接与BeautifulSoup4
我像这样解析页面HTML
page = BeautifulSoup(page.replace('ISO-8859-1', 'utf-8'),"html5lib")
Run Code Online (Sandbox Code Playgroud)
你可以看到像这样的值-4 -115(分隔-)
我希望列表中的两个值,所以我使用这个正则表达式.
value = re.findall(r'[+-]?\d+', value)
Run Code Online (Sandbox Code Playgroud)
它完美无缺,但不是这些值+2½ -102,我只能得到[-102]
为了解决这个问题,我也试过了
value = value.replace("½","0.5")
value = re.findall(r'[+-]?\d+', value)
Run Code Online (Sandbox Code Playgroud)
但这给了我关于编码的错误,说我必须设置我的文件的编码.
我也试过设置encoding=utf-8在文件顶部,但仍然给出相同的错误.
我需要问我如何转换½为0.5
我正在尝试创建一个蜘蛛,从商店中抓取并抓取每个产品并将结果输出到JSON文件,其中包括进入主页的每个类别以及抓取每个产品(名称和价格),每个产品类别页面包括无限滚动。
我的问题是,每次我在刮擦一类物品的第一页后发出请求时,不是从相同类型的物品中获取下一批物品,而是从下一个类别中获得物品,并且输出最终变得一团糟。
我已经尝试过弄乱设置,将并发请求强制为一个,并为每个请求设置不同的优先级。
我发现了有关异步爬网的信息,但是我不知道如何按顺序创建请求。
import scrapy
from scrapper_pccom.items import ScrapperPccomItem
class PccomSpider(scrapy.Spider):
name = 'pccom'
allowed_domains = ['pccomponentes.com']
start_urls = ['https://www.pccomponentes.com/componentes']
#Scrapes links for every category from main page
def parse(self, response):
categories = response.xpath('//a[contains(@class,"enlace-secundario")]/@href')
prio = 20
for category in categories:
url = response.urljoin(category.extract())
yield scrapy.Request(url, self.parse_item_list, priority=prio, cb_kwargs={'prio': prio})
prio = prio - 1
#Scrapes products from every page of each category
def parse_item_list(self, response, prio):
products = response.xpath('//article[contains(@class,"tarjeta-articulo")]')
for product in products:
item = …Run Code Online (Sandbox Code Playgroud) 我在互联网上尝试和搜索了很多但没有找到在Visual Studio 2013中创建数据库的方法.
我正在学习c#的基础知识.我在bakend有SQL Server 2008.
我正在尝试设置特定的行和列的样式.
worksheet.cell(row=file_row_number, column=1).value = "Hotel ID"
_cell = worksheet.cell("C1")
_cell.style.font.bold = True
Run Code Online (Sandbox Code Playgroud)
它告诉我错误
TypeError: cannot set bold attribute
Run Code Online (Sandbox Code Playgroud)
以前我在使用XLWT它并且它有非常简单的方法来应用样式,就像你定义style变量一样然后永远write()你可以只传递style变量来在该行/列上应用样式
有没有办法OpenPyXL轻松应用风格,如上所述?
python ×6
scrapy ×5
python-2.7 ×2
c# ×1
c++ ×1
eclipse ×1
email ×1
mingw ×1
opengl ×1
openpyxl ×1
php ×1
python-3.x ×1
regex ×1
sql ×1
sql-server ×1