C# 从web上抓取单元号
我是c.net的新手,我想从这个网站创建一个手机号码提取器 如果我有一个像olx.com.pk这样的网站,并且我已经从中提取了所有的链接,并且想从这些链接中提取数字,我想这样做 我怎么能做到这一点,我已经做了链接提取非常远想知道有关移动 这是我的链接提取器代码:C# 从web上抓取单元号,c#,regex,C#,Regex,我是c.net的新手,我想从这个网站创建一个手机号码提取器 如果我有一个像olx.com.pk这样的网站,并且我已经从中提取了所有的链接,并且想从这些链接中提取数字,我想这样做 我怎么能做到这一点,我已经做了链接提取非常远想知道有关移动 这是我的链接提取器代码: private void button1_Click(object sender, EventArgs e) { WebBrowser wb = new WebBrowser(); wb.Scr
private void button1_Click(object sender, EventArgs e)
{
WebBrowser wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.Url = new Uri(textBox1.Text);
wb.DocumentCompleted += wb_DocumentCompleted;
}
void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument code = ((WebBrowser)sender).Document;
extract(code);
}
private void extract(HtmlDocument code)
{
HtmlElementCollection anchorList = code.GetElementsByTagName("a");
foreach (var item in anchorList)
{
listBox1.Items.Add(((HtmlElement)item).GetAttribute("href"));
}
}
这是巴基斯坦手机号码的正则表达式
^\+92 | 0092-{0,1}\d{3}-{0,1}\d{7}$| ^\d{11}$| ^\d{4}-\d{7}$如果链接集合部分正确,现在只需打开每个链接并使用以下方法进行匹配: 为了防止长号码也匹配,您可以使用:
0345 2567504忽略此数字!请现在做什么?您已经建议regexp要求数字为一个数字03452567504或用破折号分隔的0345-2567504,如果您希望它处理不同的格式,您必须添加它,或者将regex的最后部分从|\d{4}-\d{7}更改为|\d{4}[-]\d{7}或添加|\d{4}\s+\d{7}在regexp.bro的末尾,我再次打扰您,但是这个\d{11}描述的数字可以是11个数字字符,但是它得到的是页面中所有的数字字符,长度为11个字符,我只需要11个字符,以03开头,后面的字符就可以完成11个字符@CodyMan啊,我忘了:,在上面加了一段代码。。。还有文档链接
Regex re = new Regex(@"(\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7}");
foreach(string link in listBox1.Items){
// Load data to `HtmlDocument code`
string text = ((mshtml.IHTMLDocument3)code.DomDocument).documentElement.innerHTML;
foreach( Match match in re.Matches(text)){
// do what you need
}
}
Regex re = new Regex(@"(?<!\d)((\+92|0092)-?\d{3}-?\d{7}|\d{11}|\d{4}-\d{7})(?!\d)");